实验二霍夫曼编码.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
信息论与编码实验报告 院系: 专业 学号 姓名 哈尔滨理工大学荣成校区 电子信息工程 霍夫曼编码 信息论与编码第二次实验报告 —、实验目的 根据霍夫曼编码的原理,川MATLAB设计进行霍夫曼编码的程序,并得岀正确的结果。 二、实验仪器或设备 1、 计算机; 2、 MATLAB 2013b。 三、二元霍夫曼编码原理 1、 将信源消息符号按其出现的概率大小依次排列,p} p2…… pn ; 2、 取两个概率最小的字母分别配以0和1两个码元,并将这两个概率相加作为一个新 字母的概率,从而得到只包含q-1个符号的新信源S1; 3、 对垂诺后的缩减信源SIS?以递减次序排序,两个概率最小符号重复步骤2的过程。 4、 不断继续上述过程,直到最后两个符号配以0和1为1卜, 5、 从最后一级开始,向前返回得到各个信源符号所对应的码元序列, 即相应的码字。 function [h,1]=huffmancode(P) %输入概率数组P%表示p的数组长度%对卩进行冒泡排序(从大到小) %输入概率数组P %表示p的数组长度 %对卩进行冒泡排序(从大到小) for i=l:n-1 for j=i+l:n if P(i)=P(j) p=P (i); P(i)=P(j); P(j)=p; end disp ( 1概率分布T Q=P; m=zeros(n-1,n); for i=l:n-1 咎初始化全零数组 [Q,b]=sort (Q) ; %sort换数是对Q进行升序排列,返回值1显示排序后位置的变动信息 m (iz :) = [b(l:n-i + l),zeros(l,i-l)]; Q=[Q(l)+Q(2),Q(3:n),1]; end for i=l:n-1 %最小两数相加与第三个数比较 c(i, :)=blanks (n*n); end %blanks是空格函数,创建空格串 c(n-1z n) = 111; 概率排在下面 c(n-l,2*n)=,0,; for i=2:n-1 %以下计算各个元素码字,概率相同时下一次输出 c(n-izl:n-l)=c(n-i + l,n*(find(m(n-i + 1, :)==]))-(n-2) :n*(find(m(n-i + 1,:) ==1))); c(n-i,n)=111; 咎对每次相加的两数进行0、1编码 c (n-if n+1:2*n-l)=c(n-iz1:n-1); c(n-i,2*n)=101; for j=l:i-1 %对每次和加的两数进行0、1编码 c(n-i, (j + 1)*n + l: (j + 2)*n)=c(n-i + l,n*(find(m(n-i + lz :)==j + l)-l)+l:n*find (m(n-i+l,:)==j+1)); end end for i=l:n h(i,l:n)=c(l,n* (find (m (lz :) ==i) -1)+1: find (m (lz :) ==i) *n) ; % 从右向左读码 11 (i) =length (find (abs (h (iz :) ) ~=32) ) ; %输出码 K end l=sum(P.*11); hl=-log2(P); H=P*(hl 1); disp ( *信息爛1 ) $平均码长 %自信息量 %求爛 H disp (,二兀崔夫曼编码平均码长?) 1 $显示平均码1 丄 disp( *编码效率T G=H/1 disp「二元霍夫曼编码1 ) %显示编码效率G 咎显示码字 五、实验结果 在 command window 中输入的概率数组为 p二[0.4 0.18 0.1 0」0.07 0.06 0.05 0.04]后输出 结果如下 huffmancode 输入概率:[0.4 0.18 0.1 0.1 0.07 0.06 0.05 0.04] 概率分布 信息爛 H = 2.5524 二元霍夫曼编码平均码长 1 = 2.6100 编码效率 G = 0.9779 二元崔夫曼编码 ans = 1 001 0000 Oil 0100 0101 00010 00011

文档评论(0)

ggkkppp + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档