信息论实验信源的二元Huffman编码.docx

上传人:小飞机 文档编号:3280382 上传时间:2023-03-12 格式:DOCX 页数:4 大小:38.17KB
返回 下载 相关 举报
信息论实验信源的二元Huffman编码.docx_第1页
第1页 / 共4页
信息论实验信源的二元Huffman编码.docx_第2页
第2页 / 共4页
信息论实验信源的二元Huffman编码.docx_第3页
第3页 / 共4页
信息论实验信源的二元Huffman编码.docx_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《信息论实验信源的二元Huffman编码.docx》由会员分享,可在线阅读,更多相关《信息论实验信源的二元Huffman编码.docx(4页珍藏版)》请在三一办公上搜索。

1、信息论实验信源的二元Huffman编码信源的二元Huffman编码 一. 实验目的 任选C语言,C+,或MATLAB等一种方法编写程序,对离散信源进行二元Huffman编码,计算平均码长及编码效率,并通过12个运行的结果,验证程序的正确性。 通过实验,掌握r元Huffman编码的方法,学会平均码长与编码效率等常见计算。 二. 实验内容 编写程序实现: 输入:信源X的分布p1,p2,LL,pm,pi=1; i=1m输出:二元变长码C=c1,c2,L,cm,平均码长n,编码效率h。 三. 实验方案或步骤 (1)把信源符号xi(i=1,2,m)出现的概率pi按由大到小的顺序排列; (2)对两个概率最

2、小的符号分别标“0”和“1”,然后把这两个概率相加作为一个新的辅助符号的概率; (3)将这个新的辅助符号与其他符号一起重新按概率大小顺序排列; (4)跳到第2步,直到出现概率相加为1为止; (5)用线将符号连接起来,得到一个码树,树的m个端点对应m个信源符号; (6)从最后一个概率为1的节点开始,沿着码树分别到达每个信源符号,将一路遇到的“0”和“1”顺序排列起来,就是对应端点的信源符号的码字。 wilyes11收集 博客(与学习无关): 四. 实验程序 p=input(n输入信源X的分布,格式p1 p2 pm:n); if (length(find(p10e-10) error(概率之和不为

3、1);%概率之和与1差的绝对值大于10的负10次方 end n=length(p);%数组中元素的个数,循环操作用 q=p;%信源的概率赋给q,以便后面排序、合并用 m=zeros(n-1,n);%定义m为零数组,记录排列顺序 for i=1:n-1 q,k=sort(q);%k是排列后的顺序,sort(q)是对q进行升序 m(i,:)=k(1:n-i+1),zeros(1,i-1);%概率小的相加之后重新排序,排列顺序记录在m矩阵中 q=q(1)+q(2),q(3:n),1;%最后两个概率小的合并成一个 end for i=1:n-1 c(i,:)=blanks(n*n);%blanks(n

4、*n)是一个1行n*n列的数组,里面是空的 end c(n-1,n)=0;%把c这个空数组的(n-1,n)这个位置赋值0 c(n-1,2*n)=1;%把c这个空数组的(n-1,2*n)这个位置赋值1 for i=2:n-1 c(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)=0; c(n-i,n+1:2*n-1)=c(n-i,1:n-1); c(n-i,2*n)=1; for j=1:i-1 c(n-i,(j+1)*n+1:(j+2)*n)=c(n-i+1,n*(find(m(n-i+

5、1,:)=j+1)-1)+1:n*find(m(n-i+1,:)=j+1); end end for i=1:n h(i,1:n)=c(1,n*(find(m(1,:)=i)-1)+1:find(m(1,:)=i)*n);%h是Huffman编码 ll(i)=length(find(abs(h(i,:)=32);%ll为各码的码长 end la=sum(p.*ll);%la是平均码长 H=sum(-p.*log2(p);%H是信息熵 RW=H/la;%RW是编码效率 for i=1:n%显示概率及Huffman编码 fprintf(概率:%g 编码 :%sn,p(i),h(i,:) end f

6、printf(平均码长为: %gn,la)%显示平均码长 fprintf(编码效率为: %gn,RW)%显示编码效率 %例1:p=0.2,0.3,0.4,0.06,0.04; %例2:p=0.18,0.17,0.01,0.15,0.2,0.19,0.1; wilyes11收集 博客(与学习无关): 五程序运行结果 输入信源X的分布,格式p1 p2 pm: 0.2,0.3,0.4,0.06,0.04 概率:0.2 编码 : 111 概率:0.3 编码 : 10 概率:0.4 编码 : 0 概率:0.06 编码 : 1101 概率:0.04 编码 : 1100 平均码长为: 2 编码效率为: 0.

7、971767 输入信源X的分布,格式p1 p2 pm: 0.18,0.17,0.01,0.15,0.2,0.19,0.1 概率:0.18 编码 : 111 概率:0.17 编码 : 110 概率:0.01 编码 : 1000 概率:0.15 编码 : 101 概率:0.2 编码 : 01 概率:0.19 编码 : 00 概率:0.1 编码 : 1001 平均码长为: 2.72 编码效率为: 0.959075 六实验总结及心得体会 Huffman编码方法是数据结构课程中的一个重要内容,当时是用二叉树来实现的。在信息论与编码中,Huffman树的概念虽然提的很少,但整体思想仍然是相同的,因此编程过程还比较顺利。 实验中涉及到大量向量、排序、比较运算,让我体验到了采用MATLAB处理这一类编程问题的方便性。 七教师评语 教师签名: 年 wilyes11收集 博客(与学习无关): 月 日

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号