- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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)