哈夫曼编码 MATLAB实现2010-01-05.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
哈夫曼编码 MATLAB实现2010-01-05

PAGE  PAGE 5 实验七 三明学院 《通信原理基础教程》实验(七) 题 目: 哈弗曼编码 学 年:09~10学年 学 期:第一学期 专 业: 电信 班 级: 07 学 号:20070662135 姓 名:林烟泉 指导教师: 邱思杰 时 间: 2010年01月05日 三 明 学 院 实 验 报 告 物理与机电工程 系 电子信息工程 专业 07 级 通信原理基础教程 科目 姓名 林烟泉 座号 35号 同组人 指导老师 邱思杰 2010 年 01 月 05 日 实验七:哈弗曼编码 日期:01-05 实验目的 掌握Huffman编码的方法; 了解Huffman编码效率及冗余度的计算; 了解用计算机实现Huffman编码的方法; 实验原理 先统计数据中各字符出现的概率,再按字符出现频率高低的顺序分别赋以由短到长的代码,从而保证文件整体的大部分字符是由较短的编码所构成。 ①将信源符号按概率递减顺序排列; ②将两个最小的概率加起来作为新符号的概率; ③重复步骤①和②,直到概率和等于1; ④完成上述步骤后沿路径返回进行编码。寻找从每一信源符号到概率为1处的路径,每层有两个分支,分别大的概率赋予0和小的概率为1,从而得到每个符号的编码。 三 明 学 院 实 验 报 告 物理与机电工程 系 电子信息工程 专业 07 级 通信原理基础教程 科目 姓名 林烟泉 座号 35号 同组人 指导老师 邱思杰 2010 年 01 月 05 日 程序如下: %运行主程序 close all clear all p=[0.2,0.19,0.18,0.17,0.15,0.10,0.01]; h=entropy(p);%返回该概密矢量的比特熵h [code,l]=huffman(p);%返回Huffman矩阵、平均码字长度l h code l 运行结果: h = 熵 2.6087 code = 00 11 000 001 010 0110 1110 l = 平均码长 2.7200 其中要添加两个子函数程序entropy.m和huffman.m三 明 学 院 实 验 报 告 物理与机电工程 系 电子信息工程 专业 07 级 通信原理基础教程 科目 姓名 林烟泉 座号 35号 同组人 指导老师 邱思杰 2010 年 01 月 05 日 %子函数2 huffman.m function[h,l]=huffman(p); % HUFFMAN 哈夫曼码生成器。 % [h,l]=huffman(p),哈夫曼码生成器 % 返回哈夫曼码矩阵h和一个概率向量为p的信源的码字长度。 if length(find(p0))~=0, error(Not a prob.vector,negative component(s)) end if abs(sum(p)-1)10e-10, error(Not a prob.vector,components do not add up to 1) end n=length(p); q=p; m=zeros(n-1,n); for i=1:n-1 [q,l]=sort(q); m(i,:)=[l(1:n-i+1),zeros(1,i-1)]; q=[q(1)+q(2),q(3:n),1]; end for i=1:n-1 c(i,:)=blanks(n*n); end c(n-1,n)=0; 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

文档评论(0)

小教资源库 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档