还剩5页未读,继续阅读
文本内容:
组)m、将每一个大组的信源符号进一步再分成两组,使划分后的两个组的概3率和近于相同,并又分别赋予两组一个二进制符号和“0”“1”、如此重复,直至每组值只剩下一个信源符号为止
4、信源符号所对应的码符号序列即为费诺码5()霍夫曼编码过程
2、将信源发出的个消息符号按其概率的递减次序依次排列1N、取概率最小的两个符号分别配以和两个码元,并将这两个符号21的概率相加作为一个新概率,与未分配码元的符号重新按概率排队、3对重排后的两个概率最小符号重复步骤
2、不断重复上述过程,直到最后两个符号配以和为止
41、重最后一级开始,向前返回得到各个信源符号所对应的码元序列,即5相应的码字
四、实验内容、哈弗曼编码1对如下信源进行哈弗曼编码,并计算编码效率X sis2s3s4s5s6s7P
0.
090.
180.
230.
170.
10.
070.16()计算信源的信息并对信源概率进行排序1Ji,把概率最小的两个数相加合成一个概率,把这个合成概率与其他概2率进行组合成新概率,再将最小的两个概率相加,直到只剩下两个概率,再反过来逐步向前编码,每一次有二个分支各赋予一个二进制码,大的赋值为小的赋值为1,0;向前返回得到各个信源符号所对应的码元序列,即相应的码字3计算码字平均码长,得出编码效率4实验程序
5.哈弗曼编码1clear all;p=[0・
090.
180.
230.
170.
100.
070.16];1=0;二H0;N=lengthp;fbr i=l:N二H H+-pi*log2pi;end信源信息嫡:fprintf C\n;dispHfbri_1:NTfor j=i+lNifpipjnrpj;Pj-Pi;⑴二P m;endendendQ〜P;m=zerosN-l,N;fbr i=l:N-l[Q,l]=sortQ;mi,=[11N-i+1,zeros,iT];Q=[Q⑴+Q2,Q3:N,11;end fbr i=l:N-lci,:=blanksN*N;尸end cN-l,N O;N-12*N=V;C5fbr i=2N-lcN-i JN-1=cN-i+l,N*findmN〜i+1,:=l-N-2:N*findmN-i+l:=1;5cN-i,N二ex;cN-i,N+l:2*N-l=c N-i,1:N-1;尸,cN-i,2*N f;forcN-i,j+l*N+l:j+2*N=c N-i+l,N*find mN-i+l,=j+l-l+l:N*find mN-i+l,=j+l;endendfbr i=l:Nhi l:N=cl N*findml:=i-l+l:findml:=i*N;5,511⑴=lengthfindabshi,、二32;endl=sump.*11;n=H/l;SrintfC编码的码字\nf;disph平均码长:fprintf\n;displfjprintf编码效率:\n!;dispn()实验结果:6信源信息
112.7040编码的码宇;010011111010010111010平均码长
2.7500编码效率
0.SS
33、费诺编码2()对与哈弗曼编码的相同信源进行排序1()将信源符号以概率递减的次序排列进来,将排列好的信源2符号划分为两大组,使第组的概率和近于相同,并各赋于一个二元码符号“和“然后,将每一大组的信源符号再分成两组,使同一组的两0“1”.个小组的概率和近于相同,并又分别赋予一个二元码符号依次下去,直至每一个小组只剩下一个信源符号为止()由前向后向前返回得到各个信源符号所对应的码元序列,3即相应的码字()计算平均码长,得到编码效率4()实验程序5函数Main clearall;N=input(N=);二二s-0;10;H0;fbr i=l:N第)Srintf%dj,i;pi=inputC p-;if pi=0源概率不能小于零’error Cft end二s s+pi二N lengthp;H-H+-pi*log2pi;endi±s=
0.9999999=
1.000001信源概率之和必须为「error endtic;for i=l:N〜1for j=i+lNi±p⑴pj m=pj;pj尸p⑴;P i=m;endendendx-fll,N,p,1;fbri=l:NLi=lengthfindxi,;l=l+p⑴*L⑴;end二n H/l;按概率降序排列的码字:fprintf,\n;dispx加rintfCT均码K\nf;displ加编码效率rintf C:\n;dispn,计算耗时fprintf time=%fW,toe;子函数1:function x=f1i,j p,r5global x;x=charx;ifj=ireturn;elseq-0;for t=i:jq=pt+q;yt=q;endfor t=i:jvt=absyt-q-yt;endfor t=i:jif v t=min vfor k=i:txk,r=J Of;endfor k=t+l:jxk,r=J1\end二d t;fli,d,p,r+1;f2d+l,j,p,r+l;f2i,d,p,r+1;elseendendendreturn;子函数2function x=f2i,j,p,r globalx;x=charx;i±j=ireturn;elseQ=0;for t=ijQ=pt+q;yt-i+l=q;endforVt=absyt—q-yt;end二for t=l:j-i-l ifvt=minv dt+iT;fork=i:dxk,r-1O;endfor k=d+l:jxk,r-T;endf2d+l,j,p,r+D;A i,d,p,r+1;f2i,d,p,r+1;fld+l,j,p,r+1;else end endendreturn;第4个p=0・171第1个
090.6700t安纸率降库排列的码京:00第5个p=
0.
0100110.
0900101100.7700第2个p=0・1811101111第6个p二
0.平均码长
2.
77000.2700编码敷至
0.8400第3个p=
0.
230.9762第丁个p-
0.计算耗Htiine=
0.04S723N=7实验结果:
五、实验心得6通过这次实验,我对哈夫曼编码和费诺编码的编码方法有了更深入的了解,对于同一信源,编码效率哈弗曼编码比费诺编码高还学会了怎样用更直观,简单地实现编码matlab。
个人认证
优秀文档
获得点赞 0