通信使用matlab三元码实验,哈夫曼编码 MATLAB实现2010-01-05.doc

这篇实验报告详细介绍了如何使用MATLAB实现哈夫曼编码的过程。首先统计字符出现概率,然后按照概率递减顺序排列并构建哈夫曼树,最终生成具有最小平均码长的编码。实验旨在掌握哈夫曼编码方法,理解其效率和冗余度计算,并学习计算机实现编码的技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

哈夫曼编码 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 allclear allp=[0.2,0.19,0.18,0.17,0.15,0.10,0.01];h=entropy(p);%返回该概密矢量的比特熵h[code,l]=huffman(p);%返回Huffman矩阵、平均码字长度lhcodel

运行结果: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.mfunction[h,l]=huffman(p);% HUFFMAN 哈夫曼码生成器。% [h,l]=huffman(p),哈夫曼码生成器% 返回哈夫曼码矩阵h和一个概率向量为p的信源的码字长度。if length(find(p<0))~=0, error('Not a prob.vector,negative component(s)')endif abs(sum(p)-1)>10e-10, error('Not a prob.vector,components do not add up to 1')endn=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];endfor i=1:n-1 c(i,:)=blanks(n*n);endc(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*(fi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值