- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)