实验二霍夫曼编码

实验二霍夫曼编码

ID:35342234

大小:59.32 KB

页数:6页

时间:2019-03-23

实验二霍夫曼编码_第1页
实验二霍夫曼编码_第2页
实验二霍夫曼编码_第3页
实验二霍夫曼编码_第4页
实验二霍夫曼编码_第5页
资源描述:

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

1、实验报(2015—2016学年第1学期)课程名称:信息论与编码基础姓名:陈明明学院:工学院专业:计算机年级:2014级学号:21440222512016年5月160第7・8节综合楼z525号室进入实验室时间进入时仪器设备状况离开实验室时间离开时仪器设备状况机器号14:55正常16:30正常46实验项目名称霍夫曼编码一、实验目的1.进一步深入理解Huffman编码算法的原理;2.提高独立进行算法编程的能力。二、实验内容1.用Matlab实现二进制Huffman编码算法程序;2.要求程序输出显示所有的码字以及编码效率;3.设计简单的输入界面(可以是简单的文字提示信息),程序

2、运行时提示用户输入代表信源符号概率的向量;要对用户输入的概率向量进行合法性检查。【二进制Huffman编码程序实现】(1)程序的输入:以一维数组的形式输入要进行huffnimi编码的信源符号的概率,在运行该程序前,显示文字提示信息,提示所要输入的概率矢量;然后对输入的概率矢量进行合法性判断,原则为:如果概率矢量中存在小于0的项,则输入不合法,提示重新输入;如果概率矢量的求和大于1,则输入也不合法,提示重新输入。(2)huffman编码具体实现原理:1)在输入的概率矩阵P正确的前提条件下,对P进行排序,并用矩阵L记录p排序之前各元素的顺序,然后将排序后的概率数组P的前两项

3、,即概率最小的两个数加和,得到新的一组概率序列,重复以上过程,最后得到一个记录概率加和过程的矩阵p以及每次排序Z前概率顺序的矩阵a。2)新生成一个n-1n列,并且每个元索含冇n个字符的空白矩阵,然后进行huffnrnn编码:将c矩阵的第n-l行的笫一和笫二个元素分别令为0和1(表示在编码时,根节点之下的概率较小的元素后补0,概率较大的元素后补1,后面的编码都遵守这个原则)然后对n-i-l的第一、二个元素进行编码,首先在矩阵a中第n-i行找到值为1所在的位置,然后在c矩阵中第n-i行中找到对应位置的编码(该编码即为第n-i-l行第一、二个元素的根节点),则矩阵c的第n-i

4、行的第一、二个元素的n-l的字符为以上求得的编码值,根据之前的规则,第一个元素最后补0,第二个元素最后补1,则完成该行的第一二个元素的编码,最后将该行的其他元素按照“矩阵c中第n-i行第j+1列的值等于对应于a矩阵中第n-i+l行中值为j+1的前面一个元素的位置在c矩阵中的编码值”的原则进行赋值,重复以上过程即可完成huffman编码。三、实验过程及结果(包括源程序和计算步骤)p=input('请输入概率矢量:’);n二length(p);fori=l:nifp(i)<0fprintfC概率矢量中存在小于0的项,输入不合法,请重新输入W);p二input('请输入概

5、率矢量:’);endendifabs(sum(p)-l)>0fprintfC概率矢量的求和大于1,输入不合法,请重新输入!『);p二input('请输入概率矢量:’);endq二P;a=zeros(nT,n);fori=l:n-1[q,1]二sort(q)a(i,:)二[1(1:n-i+1),zeros(1,i-1)]q二[q(l)+q(2),q(3:n),1];endfori=l:n~lc(i,1:n*n)二blanks(n*n);endc(n~l,n)二'O';c(n-1,2*n)」r;fori=2:n~lc(n~i,1:n-l)=c(n~i+l,n*(fin

6、d(a(n~i+l,:)==l))-(n-2):n*(find(a(n~i+l,:)==1)))c(n-i,n)二'O'c(n-i,n+1:2*nT)=c(n-i,1:nT)c(n-i,2*n)二'1'forj=l:i~lc(n-i,(j+l)*n+l:(j+2)*n)=c(n-i+l,n*(find(a(n-i+1,:)二二j+l)T)+l:n*find(a(n-i+l,:)==j+l))endendfori=l:nh(i,l:n)=c(l,n*(find(a(l,:)==i)-l)+l:find(a(l,:)二二i)*n)11(i)=length(find(abs(

7、h(i,:))~二32))endl=sum(p.*11);fprintf('霍夫曼编码:');hhh=sum(p.*(~log2(p)));fprintf('霍夫曼编码效率:);t=hh/l青输入槪率矢里:[0.350.250.150.120.080.05]ii=10.05000.08000.12000.15000.25000.3500L=65432••1a=65432•100000000000000000000000001100111010001011010011001011000110111011001h=111000

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

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

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