资源描述:
《信息论实验二报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验报告课程名称信息论与编码实验项目霍夫曼编码、率失真函数的计算实验仪器计算机系别信息与通信工程学院专业电子信息工程班级/学号电信1103/2011010550学生姓名张琪实验日期成绩指导教师实验项目:霍夫曼编码、率失真函数的计算实验项目性质:验证性实验课程:《信息论与编码》计划学时:4学时一、实验目的掌握使用计算机进行霍夫曼编码、计算率失真函数的方法。二、实验内容利用matlab语言编程实现霍夫曼编码、计算率失真函数。三、实验原理1.参照教材(焦瑞莉等编著《信息论基础教程》)第111页表4-8理解霍夫曼编码的过程2.参照教材(焦瑞莉等编著《信息论基础教程》)第14
2、8页式(6-7)理解率失真函数的定义四、实验方法与实验步骤(一)参照教材第223页信源熵程序建立文件huffman.m文件huffman.m的代码:%huffman编码生成器%%函数说明:%%[W,L.q]=huffman(P)为huffman编码函数%%P为信源的概率矢量,W为编码返回的码字%%L为编码返回的平均码字长度,q为编码效率%%***************************************%function[W,L,q]=huffman(P)if(length(find(P<=0))~=0)error('Notaprob.vector.n
3、egativecomponent');%判断是否符合概率分布条件endif(abs(sum(P)-1)>10e-10)error('Notaprob.vector.componentdonotaddupto1')%判断是否符合概率和为1endn=length(P);%计算输入元素个数p=P;mark=zeros(n-1,n);%mark为n-1行、n列矩阵,用来记录每行最小两概率叠加后概率排列次序%1)确定概率大小值的排列,得到mark矩阵。fori=1:n-1[p,num]=sort(p);%对输入元素排序并纪录mark(i,:)=[num(1:n-i+1),ze
4、ros(1,i-1)];p=[p(1)+p(2),p(3:n),1];end%2)生成一个n-1行、n1(n×n)列矩阵table,每行可看做n个段,%每段长为n,记录一个码字(每个码字的长度不会超过n)。fori=1:n-1table(i,:)=blanks(n*n);end%3)计算各个元素码字,循环n2次,决定矩阵table%从倒数第二行开始到第行的每段的码字值,到编码表格tabletable(n-1,n)='l';%小值赋1table(n-1,2*n)='0';%大值赋0fori=2:n-1table(n-i,1:n-1)=table(n-i+1,n*(fi
5、nd(mark(n-i+1,:)==1))-(n-2)...:n*(find(mark(n-i+1,:)==1)));%按mark的记录依次赋值table(n-i,n)='1';table(n-i,n+1:2*n-1)=table(n-i,1:n-1);table(n-i,2*n)='0';forj=1:i-1table(n-i,(j+1)*n+1:(j+2)*n)=table(n-i+1,...n*(find(mark(n-i+1,:)==j+1)-1)+1:n*find(mark(n-i+1,:)==j+1));%按mark的记录依次赋值endend%4)得到编
6、码后的码字fori=1:nW(i,1:n)=table(1,n*(find(mark(1,:)==i)-1)+1:n*find(mark(1,:)==i));l(i)=length(find(abs(W(i,:))~=32));endL=sum(P.*l);%计算平均码字长度H=entropy(P,2);%计算信源熵V=sum(P.*((l-L).^2));%计算码字的方差,以判断编码方法的优劣q=H/L;%计算编码效率%打印输出结果fori=1:nB{i}=i;end[m,n]=size(W);TEMP=blanks(m);W=[W,TEMP',TEMP',TEM
7、P'];[m,n]=size(W);W=reshape(W',1,m*n);s0='很好!输入正确,Huffman编码1结果如下:';s1='Huffman编码所得码字W:';s2='Huffman编码平均码字长度L:';s3='Huffman编码所得码字W的方差V:';s4='Huffman编码的编码效率q:';disp(s0);disp(s1),disp(B),disp(W);disp(s2),disp(L);disp(s3),disp(V);disp(s4),disp(q);(二)建立文件exercise4_8_1.m通过调用huffman.m计算教材第1