香农编码

香农编码法冗余度稍大,实用性不大,但有重要的理论意义。

编码步骤如下:

(1) 将信源消息符号按其出现的概率大小依次排列

p(x1)≥p(x2)≥„≥p(xn)

(2) 确定满足下列不等式整数码长Ki: 
           -log2p(xi)≤Ki<-log2p(xi)+1

(3) 为了编成唯一可译码,计算第i个消息的累加概率

Pi=p(xk)

(4) 将累加概率Pi变成二进制数。
(5) 取Pi二进制数的小数点后Ki位即为该消息符号的二进制码字。

费诺编码

编首先,将信源符号以概率递减的次序排列进来,将排列好的信源符号划分为两大组,使两组的概率和近于相同,并各赋于一个二元码符号”0”和”1”.然后,将每一大组的信源符号再分成两组,使同一组的两个小组的概率和近于相同,并又分别赋予一个二元码符号。依次下去,直至每一个小组只剩下一个信源符号为止。这样,信源符号所对应的码符号序列则为编得的码字。译码原理,按照编码的二叉树从树根开始,按译码序列进行逐个的向其叶子结点走,直到找到相应的信源符号为止。之后再把指示标记回调到树根,按照同样的方式进行下一序列的译码到序列结束。如果整个译码序列能够完整的译出则返回成功,否则则返回译码失败。

编码方法

1.将信源消息符号按其出现的概率大小依次排列。
2.将依次排列的信源符号按概率值分为两大组,使两个组的概率之和近似相同,并对各组赋予一个二进制码元“0”和“1”。
3.将每一大组的信源符号再分为两组,使划分后的两个组的概率之和近似相同,并对各组赋予一个二进制符号“0”和“1”。
4.如此重复,直至每个组只剩下一个信源符号为止。
5.信源符号所对应的码字即为费诺码。
哈弗曼编码
原理:
设某信源产生有五种符号u1、u2、u3、u4和u5,对应概率P1=0.4,P2=0.1,P3=P4=0.2,P5=0.1。首先,将符号按照概率由大到小排队,如图所示。编码时,从最小概率的两个符号开始,可选其中一个支路为0,另一支路为1。这里,我们选上支路为0,下支路为1。再将已编码的两支路的概率合并,并重新排队。多次重复使用上述方法直至合并概率归一时为止。从图(a)和(b)可以看出,两者虽平均码长相等,但同一符号可以有不同的码长,即编码方法并不唯一,其原因是两支路概率合并后重新排队时,可能出现几个支路概率相等,造成排队方法不唯一。一般,若将新合并后的支路排到等概率的最上支路,将有利于缩短码长方差,且编出的码更接近于等长码。这里图(a)的编码比(b)好。

图1 赫夫曼编码原理

赫夫曼码的码字(各符号的代码是异前置码字,即任一码字不会是另一码字的前面部分,这使各码字可以连在一起传送,中间不需另加隔离符号,只要传送时不出错,收端仍可分离各个码字,不致混淆。
实际应用中,除采用定时清洗以消除误差扩散和采用缓冲存储以解决速率匹配以外,主要问题是解决小符号集合的统计匹配,例如黑(1)、白(0)传真信源的统计匹配,采用0和1不同长度游程组成扩大的符号集合信源。游程,指相同码元的长度(如二进码中连续的一串0或一串1的长度或个数)。按照CCITT标准,需要统计2×1728种游程(长度),这样,实现时的存储量太大。事实上长游程的概率很小,故CCITT还规定:若l表示游程长度,则l=64q+r。其中q称主码,r为基码。编码时,不小于64的游程长度由主码和基码组成。而当l为64的整数倍时,只用主码的代码,已不存在基码的代码。






编码过程如下 :

(1) 将信源符号按概率递减顺序排列 ;
(2) 把两个最小的概率加起来 , 作为新符号的概率 ;
(3) 重复步骤 (1) 、 (2), 直到概率和达到 1 为止 ;
(4) 在每次合并消息时,将被合并的消息赋以1和0或0和1;
(5) 寻找从每个信源符号到概率为1处的路径,记录下路径上的1和0;
(6) 对每个符号写出"1"、"0"序列(从码数的根到终节点)。

香农编码、费诺编码、哈弗曼编码相关推荐

  1. 香农费诺编码 c语言实现,信息论课程设计(香农、费诺编码)

    <信息论课程设计(香农.费诺编码)>由会员分享,可在线阅读,更多相关<信息论课程设计(香农.费诺编码)(34页珍藏版)>请在人人文库网上搜索. 1.华北科技学院信息论基础课程设 ...

  2. 香农,费诺和赫夫曼编码代码

    香农编码(Shannon-Fano coding)是一种编码方式,用于将信源符号(例如字符或单词)转换为二进制位序列.香农编码是基于每个符号的出现频率来构建编码表的.符号出现频率越高,对应的编码就越短 ...

  3. 香农编码 哈夫曼编码 费诺编码的比较

    香农编码 哈夫曼编码 费诺编码的比较 文章目录 哈夫曼编码 编码步骤 例子 优点 缺点 费诺编码 编码步骤 例子 优点 缺点 香农编码 编码步骤 例子 优点 缺点 参考 备注:本文除了例子与数据,其他 ...

  4. 数据结构——哈弗曼编码问题

    实验六 基于哈夫曼树的数据压缩算法 [实验目的] 掌握哈夫曼树的构造算法. 掌握哈夫曼编码的构造算法. [实验内容] 问题描述 输入一串字符,根据给定的字符串中字符出现的频率建立相应的哈夫曼树, 构造 ...

  5. 可逼近信道容量编码技术之霍夫曼编码的实现

    可逼近信道容量编码技术之霍夫曼编码的实现 简介 在当今信息爆炸时代,如何采用有效的数据压缩技术来节省数据文件的存储空间和计算机网络的传送时间已越来越引起人们的重视.哈夫曼编码正是一种应用广泛且非常有效 ...

  6. 信息论霍夫曼编码c语言,霍夫曼编码

    <信息论与编码>课程实验报告 姓 名 学 号 单 位 专 业 2014 年 12 月 4 日 实验一 一.实验目的 1.理解信源编码的意义: 2.掌握霍夫曼编码的方法及计算机实现: 二.实 ...

  7. 信息论与编码-python实现三种编码(香农编码,费诺编码,赫夫曼编码)

    香农编码,费诺编码,赫夫曼编码(python实现) 开始参考了网上其他人的代码,但后来都发现要么代码有错误,要么输出结果不符合自己的预期,于是就重新实现了一下,代码仍存在一些小问题,但是能够满足作业要 ...

  8. c语言实验--字符编码,费诺编码的C语言实现实验论文.doc

    费诺编码的C语言实现实验论文 #include //头文件 #include #include #define Bmax 10 //最长码长度 #define Smax 20 //数组最大长度 /** ...

  9. huffman编码译码器用c语言,基于哈弗曼编码的数据压缩C语言实现

    haod 摘要 数据压缩技术是一项重要实用的信息技术.信息时代的到来,信息量迅速增长,使得数据压缩也显得越来越重要.数据压缩有多种编码方法,大致可分为无损压缩编码和有损压缩编码.其中,Huffman ...

  10. 哈夫曼树和哈弗曼编码

     这里第一步,取出最小权值的c跟d 组成新树,6(这里6是权值,由组成的结点权值相加) 2 4 ,然后再重复造新树 把b拉进来 组成 11 5 6 2 4,一直到权值最高的结点也被拉进来组成新树,最后 ...

最新文章

  1. mysql 当前id前后几个,使用mysql选择id前后的行
  2. JStorm/Storm源码解读(二)--启动篇
  3. 在Foreda8上安装libaio-0.3.105-2.i386.rpm
  4. A problem occurred starting process 'command '/home/jason/Android/Sdk/build-tools/23.0.3/aapt
  5. 前后端项目中跨域问题
  6. iOS开发之功能模块--推送之坑问题解决
  7. 美团数据库中间件DBProxy开源
  8. 计算机组成原理—主存储器与cpu的连接
  9. 《统计学习方法》小结
  10. 笔记-JavaScript高级程序设计-第六章思维导图
  11. 刷新计算机dns缓存的命令,电脑如何刷新dns缓存【图解】
  12. 网页测试网速软件,网页测网速在线测试(speedtest软件测速原理)
  13. html做彩色方格,超级炫酷,美图秀秀制作超漂亮彩色格子字图文教程
  14. 微信小程序+PHP实现登录注册(手把手教程)
  15. Office 2010 安装程序包的语言不受系统支持
  16. C语言规定 程序中各函数之间_,C语言规定,程序中各函数之间________。 答案:既允许直接递归调用也允许间接递归调用...
  17. App don't display in google paly
  18. 吕 思 伟 ---- 潘 爱 民 :: ATL 介 绍( 三) (转)
  19. 从UAP-Studio中导出项目并且部署到服务器上
  20. 全国计算机一级考试试题大题,全国计算机等级考试一级考试练习(新大纲)试题及答案...

热门文章

  1. 论文写作学习个人总结
  2. ubuntu: 安装 摄像头驱动
  3. 图片上传返回淘宝链接
  4. scrapy手工识别验证码登录超星泛雅
  5. Windows NAT端口映射
  6. linux中yum -y install mysql为什么默认是mariadb?以及mysql yum源的配置
  7. 【未完成】7-7 新浪微博热门话题 (30 分)
  8. c语言瑞年条件,C语言如何判断是闰年,闰年判断条件
  9. ie不能加载flash html,IE11无法显示flash?IE11无法播放视频的解决方法
  10. 胡理辉:风电王国里的流程管控人