ImageVerifierCode 换一换
格式:DOCX , 页数:8 ,大小:398.17KB ,
资源ID:8469665      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8469665.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(信息论与编码课程大作业二进制哈夫曼编码.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

信息论与编码课程大作业二进制哈夫曼编码.docx

1、信息论与编码课程大作业二进制哈夫曼编码信息论与编码课程大作业二进制哈夫曼编码 信息论与编码课程大作业 题 目: 二进制哈夫曼编码 学生姓名: 学 号: 2010020200 专业班级: 2010级电子信息班 2013年 5月 18日 二进制哈夫曼编码1、二进制哈夫曼编码的原理及步骤1、1信源编码的计算设有N个码元组成的离散、无记忆符号集,其中每个符号由一个二进制码字表示,信源符号个数n、信源的概率分布P=p(si),i=1,.,n。且各符号xi的以li个码元编码,在变长字编码时每个符号的平均码长为 ;信源熵为: ;唯一可译码的充要条件: ; 其中m为码符号个数,n为信源符号个数,Ki为各码字长

2、度。 构造哈夫曼数示例如下图所示。 1、2 二元霍夫曼编码规则 (1)将信源符号依出现概率递减顺序排序。 (2)给两个概率最小的信源符号各分配一个码位“0”和“1”,将两个信源符号合并成一个新符号,并用这两个最小的概率之和作为新符号的概率,结果得到一个只包含(n-1)个信源符号的新信源。称为信源的第一次缩减信源,用s1 表示。(3)将缩减信源 s1 的符号仍按概率从大到小顺序排列,重复步骤(2),得到只含(n-2)个符号的缩减信源s2。(4)重复上述步骤,直至缩减信源只剩两个符号为止,此时所剩两个符号 的概率之和必为 1,然后从最后一级缩减信源开始,依编码路径向前返回,就得到各信源符号所对应的

3、码字。1、3 二元哈夫曼编码流程图如下图所示。 是 是2、二元哈夫曼编码程序p=input(please input a number:) %提示输入界面n=length(p);for i=1:nif p(i)0fprintf(n The sum of the probabilities in huffman can more than 1!n);p=input(please input a number:) %如果输入的概率数组总和大于 1,则重endq=p;a=zeros(n-1,n); %生成一个 n-1 行 n 列的数组 for i=1:n-1q,l=sort(q); %对概率数组q进

4、行从小至大的排序,并且用l数组返回一个q排序前的顺序编号a(i,:)=l(1:n-i+1),zeros(1,i-1); %由数组 l 构建一个矩阵,该矩阵表明概率合并q=q(1)+q(2),q(3:n),1; %将排序后的概率数组 q 的前两项,即概率最小的两endfor i=1:n-1c(i,1:n*n)=blanks(n*n); endc(n-1,n)=0; %由于a矩阵的第n-1行的前两个元素为进行huffman编码加和运算时所得的最c(n-1,2*n)=1;for i=2:n-1c(n-i,1:n-1)=c(n-i+1,n*(find(a(n-i+1,:)=1)-(n-2):n*(fi

5、nd(a(n-i+1,:)=1); c(n-i,n)=0; %根据之前的规则,在分支的第一个元素最后补 0c(n-i,n+1:2*n-1)=c(n-i,1:n-1); c(n-i,2*n)=1; %根据之前的规则,在分支的第一个元素最后补 1for j=1:i-1c(n-i,(j+1)*n+1:(j+2)*n)=c(n-i+1,n*(find(a(n-i+1,:)=j+1)-1)+1:n*find(a(n-i+1,:)=j+ 1);endend %完成 huffman 码字的分配 for i=1:nh(i,1:n)=c(1,n*(find(a(1,:)=i)-1)+1:find(a(1,:)=

6、i)*n); ll(i)=length(find(abs(h(i,:)=32); %计算每一个 huffman 编码的长度enddisp(二元霍夫曼编码平均码长)l=sum(p.*ll) %计算平均码长%fprintf(n huffman code:n);hdisp(信源熵)hh=sum(p.*(-log2(p) %计算信源熵%fprintf(n the huffman effciency:n);disp(编码效率)t=hh/l %计算编码效率3、运行结果及分析 当输入数据0.01,0.02,0.03,0.04,0.10,0.15,0.20,0.25,0.20时3、1运行结果:please i

7、nput a number:0.01,0.02,0.03,0.04,0.10,0.15,0.20,0.25,0.20p = Columns 1 through 5 0.0100 0.0200 0.0300 0.0400 0.1000 Columns 6 through 9 0.1500 0.2000 0.2500 0.2000二元霍夫曼编码平均码长l = 2.7400h = 1110100 1110101 111011 11100 1111 110 00 10 01信源熵hh = 2.6883编码效率t = 0.98113、2分析: 1、在哈弗曼编码的过程中,对缩减信源符号按概率有大到小的顺序

8、重新排列,应使合并后的新符号尽可能排在靠前的位置,这样可使合并后的新符号重复编码次数减少,使短码得到充分利用。 2、哈弗曼编码效率相当高,对编码器的要求也简单得多。 3、哈弗曼它保证了信源概率大的符号对应于短码,概率小的符号对应于长码,每次缩减信源的最后两个码字总是最后一位码元不同,前面的各位码元都相同,每次缩减信源的最长两个码字有相同的码长。 4、哈弗曼的编法并不一定是唯一的。4、体会 此次设计用matlab编程实现哈夫曼对信源无失真编码。由于课本知识点的不太理解,一点都不知道编码的过程,后来通过阅读课本、网上查阅资料,最后才对本次设计有了一定的理解,详细理解了哈夫曼的具体编码过程。经过理解

9、,发现这种编码其实挺简单的,最重要的是怎样用程序把他实现,这对我们的编程能力也是一次考验。设计要求中要求计算信源熵,这又考察了现代通信原理的知识。所以这次设计所设计的知识面广,有利于我们对相关知识进一步加深、巩固。更加深刻的感觉到哈夫曼编码能够大大提高通信的效率 通过这次设计,让我明白,在平时的学习中,对于每一个知识点都不能一知半解,否则在具体的实际运用中就会现“原形”。比如这次哈夫曼编码,如果我们只读一下它的编码过程的步骤,不实际举一个例子来验证,我们就很有可能在很多地方犯错。所以需要我们在阅读课本的时候还要仔细思考课本有关编码的示例,这对于我们掌握课本知识尤其重要的。这次设计编程的思路,编辑,调试等让我明白编程时一定要保持清醒的头脑,有严谨的思维才能将实验要求实现得完整;调试过程会发现很多问题,这时不能烦躁,要耐心的去发现问题,不断掌握matlab软件的各种调试方法。此次的实践又是对我的一次警醒,要有认真的态度,才有可能做好每一件事的!最后非常感谢一直给我教导的老师和帮助同学们,他们的支持和鼓励让我在遇到挫折时能够战胜它,也让我成功了完成了这次课程设计。今后我要更加努力的学习专业知识,提高自我的能力!

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1