实验三 二进制霍夫曼编码_第1页
实验三 二进制霍夫曼编码_第2页
实验三 二进制霍夫曼编码_第3页
实验三 二进制霍夫曼编码_第4页
实验三 二进制霍夫曼编码_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验三实验三 二进制霍夫曼编码二进制霍夫曼编码一、实验目的一、实验目的熟悉熟悉 MatlabMatlab 工作环境及工具箱;工作环境及工具箱; 掌握霍夫曼编码的基本步骤;掌握霍夫曼编码的基本步骤;利用利用MATLABMATLAB实现霍夫曼编码。实现霍夫曼编码。 二、实验原理二、实验原理变长编码变长编码 不要求所有码字长度相同,对不同概率不要求所有码字长度相同,对不同概率的信源符号或序列,可赋予不同长度的的信源符号或序列,可赋予不同长度的码字。码字。 变长编码力求平均码长最小,此时编码变长编码力求平均码长最小,此时编码效率最高,信源的冗余得到最大程度的效率最高,信源的冗余得到最大程度的压缩。压缩

2、。几种常用变长编码方法几种常用变长编码方法 霍夫曼编码霍夫曼编码 费若编码费若编码 香农编码香农编码霍夫曼编码霍夫曼编码二进制霍夫曼编码二进制霍夫曼编码r r进制霍夫曼编码进制霍夫曼编码符号序列的霍夫曼编码符号序列的霍夫曼编码二进制霍夫曼编码二进制霍夫曼编码将信源中将信源中n n个符号按概率分布的大小,以递减次序排列个符号按概率分布的大小,以递减次序排列起来;起来; 用用0 0和和1 1码分别分配给概率最小的两个信源符号,并将码分别分配给概率最小的两个信源符号,并将这两个概率最小的信源符号合并成一个新符号,并用这两个概率最小的信源符号合并成一个新符号,并用这两个最小概率之和作为新符号的概率,从

3、而得到只这两个最小概率之和作为新符号的概率,从而得到只包含包含n-1n-1个符号的新信源,称为其缩减信源;个符号的新信源,称为其缩减信源; 二进制霍夫曼编码二进制霍夫曼编码把缩减信源的符号仍按概率大小以递减次序排列,再把缩减信源的符号仍按概率大小以递减次序排列,再将最后两个概率最小的符号合并成一个新符号,并分将最后两个概率最小的符号合并成一个新符号,并分别用别用0 0和和1 1码表示,这样又形成一个新缩减信源码表示,这样又形成一个新缩减信源;依次继续下去,直到缩减信源最后只剩两个符号为止。依次继续下去,直到缩减信源最后只剩两个符号为止。再将最后两个新符号分别用再将最后两个新符号分别用0 0和和

4、1 1 码符号表示。最后这码符号表示。最后这两个符号的概率之和为两个符号的概率之和为1 1,然后从最后一级缩减信源开,然后从最后一级缩减信源开始,依编码路径右后向前返回,就得到各信源符号所始,依编码路径右后向前返回,就得到各信源符号所对应得码符号序列,即对应得码字。对应得码符号序列,即对应得码字。 r进制霍夫曼编码进制霍夫曼编码由二进制霍夫曼编码可推广到由二进制霍夫曼编码可推广到r r进制霍夫曼编码,只是进制霍夫曼编码,只是每次求缩减信源时,改求每次求缩减信源时,改求r r个最小概率之和,即将个最小概率之和,即将r r个个概率最小符号缩减为一个新符号,直到概率之和为概率最小符号缩减为一个新符号

5、,直到概率之和为1 1。但要注意,即缩减过程中可能到最后没有但要注意,即缩减过程中可能到最后没有r r个符号。为个符号。为达次目的,可给信源添加几个概率为零的符号。达次目的,可给信源添加几个概率为零的符号。符号序列的霍夫曼编码符号序列的霍夫曼编码对信源编码除了对信源符号编码以外,也可对信源符对信源编码除了对信源符号编码以外,也可对信源符号序列编码,一般来说,对序列编码比对单个符号更号序列编码,一般来说,对序列编码比对单个符号更为有效。为有效。三、实验内容三、实验内容对任意信源利用MATLAB求其二进制霍夫曼编码。四、实验方法四、实验方法取得信源概率分布,并进行合法性判断;取得信源概率分布,并进

6、行合法性判断;对信源概率分布进行降序排列;对信源概率分布进行降序排列; x= x=fliplr(sort(xfliplr(sort(x) ) 建立空的编码表建立空的编码表构造一个零矩阵;构造一个零矩阵; B=zeros(n,n-1)B=zeros(n,n-1)将信源概率分布放入矩阵的第一列;将信源概率分布放入矩阵的第一列; for i=1:nfor i=1:n B(i,1)= B(i,1)=x(ix(i) ) end end 按照二进制霍夫曼编码步骤,最小两个概率相加生成按照二进制霍夫曼编码步骤,最小两个概率相加生成一个新的符号,得到一个缩减信源;一个新的符号,得到一个缩减信源; r=B(i,1)+B(i-1,1);r=B(i,1)+B(i-1,1); x(n-1)=r; x(n-1)=r; x(nx(n)=0;)=0; x= x=fliplr(sort(xfliplr(sort(x););生成编码表的其他各列生成编码表的其他各列 for j=2:n-1 for j=2:n-1 for i=1:t for i=1:t B(i,jB(i,j)=)=T(iT(i);); end end end

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论