哈夫曼编码的分析与实现.doc

上传人:壹****1 文档编号:558292726 上传时间:2023-09-10 格式:DOC 页数:24 大小:394.04KB
返回 下载 相关 举报
哈夫曼编码的分析与实现.doc_第1页
第1页 / 共24页
哈夫曼编码的分析与实现.doc_第2页
第2页 / 共24页
哈夫曼编码的分析与实现.doc_第3页
第3页 / 共24页
哈夫曼编码的分析与实现.doc_第4页
第4页 / 共24页
哈夫曼编码的分析与实现.doc_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《哈夫曼编码的分析与实现.doc》由会员分享,可在线阅读,更多相关《哈夫曼编码的分析与实现.doc(24页珍藏版)》请在金锄头文库上搜索。

1、哈夫曼编码的分析与实现吉林建筑大学电气与计算机学院信息理论与编码课程设计报告设计题目: 哈夫曼编码的分析与实现 专业班级: 电子信息工程 131 学生姓名: 学 号: 指导教师: 设计时间: 2016。11.212016。12。2 教师评语:成绩 评阅教师 日期 第1章 概述1。1设计的作用、目的通过完成具体编码算法的程序设计和调试工作,提高编程能力,深刻理解信源编码、信道编译码的基本思想和目的,掌握编码的基本原理与编码过程,增强逻辑思维能力,培养和提高自学能力以及综合运用所学理论知识去分析解决实际问题的能力,逐步熟悉开展科学实践的程序和方法。主要目的是加深对理论知识的理解,掌握查阅有关资料的

2、技能,提高实践技能,培养独立分析问题、解决问题及实际应用的能力。 通过课程设计各环节的实践,应达到如下要求: 1理解无失真信源编码的理论基础,掌握无失真信源编码的基本方法; 2根据哈夫曼编码算法,考虑一个有多种可能符号(各种符号发生的概率不同)的信源,得到哈夫曼编码和码树; 3掌握哈夫曼编码的优缺点; 4通过完成具体编码算法的程序设计和调试工作,提高编程能力,深刻理解信源编码、信道编译码的基本思想和目的,掌握编码的基本原理与编码过程,增强逻辑思维能力,培养和提高自学能力以及综合运用所学理论知识去分析解决实际问题的能力,逐步熟悉开展科学实践的程序和方法。1.2设计任务及要求1. 理解无失真信源编

3、码的理论基础,掌握无失真信源编码的基本方法;2。 掌握哈夫曼编码/费诺编码方法的基本步骤及优缺点;3。 深刻理解信道编码的基本思想与目的,理解线性分组码的基本原理与编码过程;4。 能够使用MATLAB或其他语言进行编程,编写的函数要有通用性.1。3设计内容一个有8个符号的信源X,各个符号出现的概率为: 进行哈夫曼编码,并计算平均码长、编码效率、冗余度。第2章 哈夫曼编码的分析与实现2。1哈夫曼编码介绍及原理哈夫曼编码(Huffman Coding)是一种熵编码编码压缩方式,哈夫曼编码是可变字长编码(VLC)的一种。哈夫曼压缩是个无损的压缩算法,一般用来压缩文本和程序文件。哈夫曼压缩属于可变代码

4、长度算法一族.意思是不同符号(例如,文本文件中的字符)用一个特定长度的位序列替代.因此,在文件中出现频率高的符号,使用短的位序列,而那些很少出现的符号,则用较长的位序列。 哈夫曼编码的码长是变化的,对于出现频率高的信息,编码的长度较短;而对于出现频率低的信息,编码长度较长。这样,处理全部信息的总码长一定小于实际信息的符号长度.下面给出具体的Huffman编码算法.(1) 首先统计出每个符号出现的频率,如本次课程设计x1到x7的出现频率分别为0.39,0.17,0.12,0.1,0.07,0.06,0。05,0.04.(2) 从左到右把上述频率按从小到大的顺序排列。(3) 每一次选出最小的两个值

5、,作为二叉树的两个叶子节点,将和作为它们的根节点,这两个叶子节点不再参与比较,新的根节点参与比较.(4) 重复(3),直到最后得到和为1的根节点. (5) 将形成的二叉树的左节点标0,右节点标1.把从最上面的根节点到最下面的叶子节点途中遇到的0,1序列串起来,就得到了各个符号的编码。2.2 哈夫曼编码步骤(1)将信源消息符号按其出现的概率大小依次排列为 (2)取两个概率最小的字母分别分配以0和1两个码元,并将这两个概率相加作为一个新字母的概率,与未分配的二进制符号的字母重新排队 。(3)对重排后的两个概率小符号重复步骤(2)的过程。(4)不断继续上述过程,直到最后两个符号配以0和1为止。(5)

6、从最后一级开始,向前返回得到各个信源符号所对应的码元序列,即相应的码子。2.4 哈夫曼编码特点 (1)哈弗曼的编码方法保证了概率大的符号应对于短码,概率小的应对于长码,充分利用了短码; (2)缩减信源的最后两个码子总是最后一位不同,从而保证了哈弗曼码是及时码。 (3)哈夫曼码没有错误保护功能,在译码时,如果码串中没有错误,那么就能一个接一个地正确译出代码。但如果码串中有错误,哪怕仅是1位出现错误,不但这个码本身译错,更糟糕的是后面的数据串也会接着被译错,全乱了套,这种现象称为错误传播(error propagation)。计算机对这种错误也无能为力,说不出错在哪里,更谈不上去纠正它; (4)哈

7、夫曼编码只能用整数来表示单个符号而不能用小数,这很大程度上限制了压缩效果; (5)哈夫曼所有位都是合在一起的,如果改动其中一位就可以使其数据变得面目全非.2。5设计步骤设一个有8个符号的信源X,各个符号出现的概率为: 则有两种哈夫曼编码方法,(0,1)编码或者(1,0)编码.表1 哈夫曼(0,1)编码过程框图信源符号 概率 编码过程码字 码长 X10。39 0。39 0。39 0.39 0.39 0.39 0。61 111 X20.17 0.17 0.17 0.19 0.25 0.36 0.390013 X30。12 0.12 0。13 0.17 0.19 0。250113 X40.1 0。1

8、 0.12 0.13 0.1700004 X50。07 0。09 0.1 0.1201004 X60.06 0.07 0。0901014 X70。05 0.06000105 X80。04000115该哈夫曼码的平均码长 为 信源熵为编码效率 冗余度 表2 哈夫曼(1,0)编码过程框图信源符号 概率 编码过程码字 码长 X10。39 0.39 0。39 0.39 0。39 0。39 0.61 101 X20。17 0.17 0。17 0。19 0。25 0。36 0.391103 X30.12 0.12 0。13 0.17 0。19 0。251003 X40。1 0。1 0.12 0。13 0。

9、1711114 X50.07 0。09 0.1 0.1210114 X60。06 0.07 0.0910104 X70。05 0。06111015 X80。04111005信源熵为该哈夫曼码的平均码长 为编码效率 冗余度 通过以上的两种不同的编码方式进行比较,我们发现其实以上两种编码的码虽然不同,但是其知识将原来的1换成了0,0换成了1,他的码长,编码效率,冗余度是没有变化的.需要注意的是,对于多进制哈夫曼编码,为了提高编码效率,就要使长码的符号数量尽量少,概率尽量小,所以信源符号数最好满足,其中r为进制数,n为缩减的次数.比如说如果要进行三进制编码,那么最好信源具有7个符号,第一次合并后减少

10、2个称为5个,第二次合并后又减少2个称为3个,这样给每一个赋予三进制符号就没有浪费的了。但是如果信源只有6个符号的话,为了减少最长码的数量,那么应该在第一次合并是添置为零的虚拟符号1个,事实上只合并2个概率最小的符号,后面每次合并3个,就可以是的最长的码的符号数量最少,也就是长码的概率最小,从而得到最高的编码效率。但是对于信源的某一个符号来说,有时候可能还会比定长码长。例如当信源有5个是,采用定长码方式可用3个二进制符号组成码字。而用变长码是有时候码字却长达4个二进制符号.所以编码简单化的代价就是要有大量的储存设备用来缓冲码字长度的差异,也就是码方差小的码质量好的原因。设一秒钟送一个信源符号,

11、输出码字却只有5个二进制符号,若希望平均每秒输出个二进制的信息率输出,才能从长久计算,输出和输入保持平衡。当储存量不够大的时候,可能有时取空,有时溢出。例如信源连续发出短码时,就会出现取空,就是说还没有存入就要输出。连续发出长码时,就会出现溢出,就是说存入太多,以致于存满了还未取出就要再次存入。所以应估计所需的存储器容量,才能使上述现象发生的概率小至可以容忍。当我们计算两个概率之和时,假设这两种的概率之和与上方概率有相同,我们应该把这个和概率放在其相同概率上方还是下方,我们就此进行讨论;设我们有一组概率为;0。4,0。2,0。2,0.1,0。1,则离散无记忆信源 当概率相同放在下方时,哈夫曼编

12、码为: 表3 哈夫曼编码方法一 信源编码概率0.4 1。0 0.6编码过程码字码长X10。40。4 0.2 0.4 0.4 0。2 0。20.2002X20。2102X30。2112X40。10103X50.10113 当概率相同放在上方时,哈夫曼编码为: 表4 哈夫曼编码方法二信源编码概率编码过程码字码长X10.4 0。4 0.4 0.6 1。0 0。2 0。4 0.4 0。2 0。2 0.2 11X20.2012X30。20002X40.100104X50.100114 则上面两表给出的哈夫曼平均码长相等,即 =编码效率也相同,即 = 但是两种码的质量不完全相同,可用码方差来表示,即 由此可见放在上面的哈夫曼编码比放在下面的哈夫曼编码得到的码方差要小许多,故应该放在上面。2.6哈弗曼树原理及过程哈夫曼树(Huffman tree),又名最优树,指给定n个权值作为n的叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。若将

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号