实验二霍夫曼编码.doc

实验二霍夫曼编码.doc

ID:51833099

大小:159.50 KB

页数:4页

时间:2020-03-16

上传者:diyinianji
实验二霍夫曼编码.doc_第1页
实验二霍夫曼编码.doc_第2页
实验二霍夫曼编码.doc_第3页
实验二霍夫曼编码.doc_第4页
资源描述:

《实验二霍夫曼编码.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

信息论与编码实验报告院系:哈尔滨理工大学荣成校区专业:电子信息工程学号:姓名:日期:2015年6月16日 霍夫曼编码信息论与编码第二次实验报告一、实验目的根据霍夫曼编码的原理,用MATLAB设计进行霍夫曼编码的程序,并得出正确的结果。二、实验仪器或设备1、计算机;2、MATLAB 2013b。三、二元霍夫曼编码原理1、将信源消息符号按其出现的概率大小依次排列,³;2、取两个概率最小的字母分别配以0和1两个码元,并将这两个概率相加作为一个新字母的概率,从而得到只包含q-1个符号的新信源S1;3、对重排后的缩减信源S1重新以递减次序排序,两个概率最小符号重复步骤2的过程。4、不断继续上述过程,直到最后两个符号配以0和1为止。5、从最后一级开始,向前返回得到各个信源符号所对应的码元序列,即相应的码字。四、霍夫曼编码实现程序function[h,l]=huffmancode(P)P=input('输入概率:');%输入概率数组Pn=length(P);%表示P的数组长度fori=1:n-1forj=i+1:nifP(i)<=P(j)%对P进行冒泡排序(从大到小)p=P(i);P(i)=P(j);P(j)=p;endendenddisp('概率分布') Q=P;m=zeros(n-1,n);%初始化全零数组fori=1:n-1[Q,b]=sort(Q);%sort函数是对Q进行升序排列,返回值l显示排序后位置的变动信息m(i,:)=[b(1:n-i+1),zeros(1,i-1)];Q=[Q(1)+Q(2),Q(3:n),1];%最小两数相加与第三个数比较endfori=1:n-1c(i,:)=blanks(n*n);%blanks是空格函数,创建空格串endc(n-1,n)='1';%以下计算各个元素码字,概率相同时下一次输出概率排在下面c(n-1,2*n)='0';fori=2:n-1c(n-i,1:n-1)=c(n-i+1,n*(find(m(n-i+1,:)==1))-(n-2):n*(find(m(n-i+1,:)==1)));c(n-i,n)='1';%对每次相加的两数进行0、1编码c(n-i,n+1:2*n-1)=c(n-i,1:n-1);c(n-i,2*n)='0';%对每次相加的两数进行0、1编码forj=1:i-1c(n-i,(j+1)*n+1:(j+2)*n)=c(n-i+1,n*(find(m(n-i+1,:)==j+1)-1)+1:n*find(m(n-i+1,:)==j+1));endendfori=1:nh(i,1:n)=c(1,n*(find(m(1,:)==i)-1)+1:find(m(1,:)==i)*n);%从右向左读码ll(i)=length(find(abs(h(i,:))~=32));%输出码长endl=sum(P.*ll);%平均码长h1=-log2(P);%自信息量H=P*(h1');%求熵disp('信息熵')Hdisp('二元霍夫曼编码平均码长')%显示平均码lldisp('编码效率')%显示编码效率GG=H/ldisp('二元霍夫曼编码')%显示码字五、实验结果在command window中输入的概率数组为p=[0.40.180.10.10.070.060.05 0.04]后输出结果如下huffmancode输入概率:[0.40.180.10.10.070.060.050.04]概率分布信息熵H=2.5524二元霍夫曼编码平均码长l=2.6100编码效率G=0.9779二元霍夫曼编码ans=10010000011010001010001000011

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭