算术编码是一种采用的编码,我们用matlab语言来实现算术码的编码、译码过程。
首先,我们给定研究范围为 2元信号、用{0,1}符号来表示,然后我们假设发送方和接收方都知道符号0出现的概率p(0)和符号1出现的概率p(1)。
首先,我们对序列进行编码:
编码的语言描述,我们这里就不具体说明了,在百度百科等一系列文章中都可以找到,这里我们用matlab来实现这一过程:

M=2;%二元数据
p=[0.8 0.2];%需要自己给出
x=[1 0 1 0];%需要编码的序列,发行方想要发送的原始序列
low=0;%区间下界
high=1;%区间上界
for i=1:length(x)if x(i)==0high=high-(high-low)*p(2);elseif x(i)==1low=low+(high-low)*p(1);end
end

这样子,我们得到[1 0 1 0]这个序列的区间上下界为0.9536和0.928
接着,我们取上界这个小数,作为我们要发送的小数,但是,信道只能传输二进制,不能传输小数,于是,我们首先要将其转化成二进制,至于多少位,我们算原始序列的熵,然后向上取整,即:

N=ceil(-log2(P));
y=dectobin(high,2*N);%取high作为输出值
y=y(1:N);%输出序列;

我们在信道中传输的就是y,这个序列。
接着,我们考虑接受方,接到y这个序列之后,怎么译码。
这里我们分两种情况来讨论,若接收方很厉害,它神奇地知道发送方原始序列的长度的话,那么译码过程就变得很简单了,直接上代码:

%接收方:
%如果知道长度即length(x)
r = bintodec(y);
high_r=1;
low_r=0;
rec=zeros(length(x),1);
for i=1:length(x)if low_r+(high_r-low_r)*p(1)<rrec(i)=1;low_r=low_r+(high_r-low_r)*p(1);elserec(i)=0;high_r=high_r-(high_r-low_r)*p(2);end
end
rec%rec就是我们译码的结果

如果接收方很不幸,它不知道原始序列的长度,我们也有办法准确译码,只需要增加一个额外的环节,想知道怎么弄,可以看资源 算术码整个过程、主函数及所有子函数,含超详细注释.rar
详细代码见资源:
算术码整个过程、主函数及所有子函数,含超详细注释.rar
https://download.csdn.net/download/weixin_43102634/11916811

算术编码、译码以及matlab实现相关推荐

  1. 基于MATLAB的算术编码

    1.算术编码简介 算术编码是一种无损数据压缩方法,也是一种熵编码的方法.和其它熵编码方法不同的地方在于,其他的熵编码方法通常是把输入的消息分割为符号,然后对每个符号进行编码.而算术编码是直接把整个输入 ...

  2. 信息论与编码实验报告——MATLAB实现算术编码

    一.实验内容 试用MATLAB编制算术编码算法实现程序. 二.实验过程 2.1 算术编码实现原理 算术编码的算法思想如下: (1)对一组信源符号按照符号的概率从大到小排序,将[0,1)设为当前分析区间 ...

  3. (Matlab源码)Matlab实现算术编码(Arithmetic coding)超级详解(每一段代码都可以看懂)

    1.代码功能 输入:一个字符串 输出: codeword(码值) codeword所占的位数 2.代码框图 3.代码超详解 统计字符串中的字符种类,调用函数,放入数组b中. b=unique(str1 ...

  4. (7,4)汉明码编码译码及计算最小码距——基于MATLAB编程

    (7,4)汉明码编码译码及计算最小码距--基于MATLAB编程 编码 A=[1 1 1 0; 0 1 1 1; 1 1 0 1] %A 可随便写四个不为0的列向量,是为了生成一致校验矩阵 H=[A e ...

  5. (含Matlab源码)算术编码(arithmetic coding)的underflow问题

    0.文章结构 文章的行文逻辑如下,看官可以根据需要跳读,节省时间. 1.介绍underflow和overflow. 2.underflow问题起源 3.underflow问起探索 4.underflo ...

  6. 课设复习之信息论自适应算术编码与译码

    接上一篇博客:课设复习之信息论固定算术编码与译码https://blog.csdn.net/hfuter2016212862/article/details/90517908 对于自适应算术编码仍然存 ...

  7. 课设复习之信息论固定算术编码与译码

    香农三大定理复习,转自https://baike.baidu.com/item/%E9%A6%99%E5%86%9C%E4%B8%89%E5%A4%A7%E5%AE%9A%E7%90%86/90299 ...

  8. 【编码译码】基于matlab QC-LDPC码编码和译码【含Matlab译码 2194期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[编码译码]基于matlab QC-LDPC码编码和译码[含Matlab译码 2194期] 点击上面蓝色字体,直接付费下载,即可. 获取代 ...

  9. matlab完成信源编码译码,Huffman编码和译码的MATLAB实现.doc

    Huffman编码和译码的MATLAB实现.doc Huffman编码及译码的MATLAB实现 沈逸峰 (上海师范大学 信息与机电工程学院,上海 200333) 摘要:本论文首先介绍了Huffman编 ...

最新文章

  1. 马斯克将Roadster送上太空,“宇宙第一跑车”诞生
  2. SAP MM ML81N为采购订单创建服务接收单,报错- No matching PO items selected -
  3. 一文尽揽2018 Google I/O:谷歌让你感受到AI科技的魅力
  4. 【UVA】10012 - How Big Is It?(暴力)
  5. 自然语言处理之神经网络基础(四)
  6. Linux文件属性3——文件权限管理
  7. Javascript的数组对象
  8. 爬虫开发.1爬虫介绍
  9. 数据库零碎---mysql编码设置,与乱码分析
  10. scala编程第17章学习笔记(2)——集和映射
  11. JAVAWeb项目 微型商城项目-------(六)管理员登录
  12. .NET 文件相关的所有操作
  13. Atitit 数据校验法 目录 1. 用内置表单数据校验 简单快捷 1 1.1. input 元素的校验约束 — starting simple 1 1.1.1. required 属性 1 1.1
  14. python 合并txt文件
  15. java 锯齿_Java2D图形抗锯齿
  16. 太原计算机专业学校在哪里,太原信息技术学校在哪里
  17. 【废墟】知我者谓我心忧,不知我者谓我何求~
  18. 类选择器和ID选择器
  19. (转)HBase WAL简介
  20. 切比雪夫,霍夫丁不等式证明

热门文章

  1. Steam根目录下userdata文件夹命名规则
  2. 14. Setting Ta and RTO【设置Ta和RTO】
  3. 读取文件夹下同类型文件的文件名并排序(实例)
  4. 【转】Python之获取每日涨停板股票数据并绘制K线图!
  5. 用python画小猪佩奇代码_用Python画小猪佩奇
  6. 大家都在学C语言吧,作为程序员这有一个问题,秃顶算工伤吗?
  7. 【树莓派C语言开发】实验15:电位计传感器(关联PCF8951)
  8. python+django高校志愿者活动报名系统vue+elementui
  9. 计算机网络五要素,网络安全五个基本要素是什么
  10. 用Python实现微信公众号WCI指数计算器