(推荐下载)huffman编码实验matlab[1]_第1页
(推荐下载)huffman编码实验matlab[1]_第2页
免费预览已结束,剩余4页可下载查看

下载本文档

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

文档简介

1、(完整word版)huff man编码实验matlab 1编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们 对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(完整word版)huffman编码实验matlabl)的内容能够给您的工作和学习带来便利。同时也真诚的希望收到您的建议 和反馈,这将是我们进步的源泉,前进的动力。本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以 下为(完整word版)huffman编码实验matlab的全部内容。实验报告Huffman编码算法的实现一、实验目的K

2、学习Mat lab软件的使用和编程;2、进一步深入理解Huffman编码算法的原理;3、提高独立进行算法编程的能力。二、实验内容1X用Mat lab实现Huffman编码算法程序;2、要求程序输出显示所有的码字以及编码效率;3、设计简单的输入界面(可以是简单的文字提示信息),程序运行时 提示用户输入代表信源符号概率的向量;要对用户输入的概率向量进 行合法性检查。三、实验原理1X二进制Huffman编码的基本原理及算法(D把信源符号集中的所有符号按概率从大到小排队。(2)取概率最小的两个符号作为两片叶子合并(缩减)到一个节点。(3)视此节点为新符号,其概率等于被合并(缩减)的两个概率之和, 参与

3、概率排队。(4)重复(2) (3)两步骤,直至全部符号都被合并(缩减)到根。(5)从根出发,对各分枝标记0和1。从根到叶的路径就给出了各个码 字的编码和码长.2、程序设计的原理(1)程序的输入:以一维数组的形式输入要进行huffman编码的信源符 号的概率,在运行该程序前,显示文字提示信息,提示所要输入的概率 矢量;然后对输入的概率矢量进行合法性判断,原则为:如果概率矢量 中存在小于0的项,则输入不合法,提示重新输入;如果概率矢量的求和 大于1,则输入也不合法,提示重新输入。(2) huffman编码具体实现原理:在输入的概率矩阵P正确的前提条件下,对P进行排序,并用矩 阵L记录p排序之前各元

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

5、点),则矩阵c的第n-i行的第一、二个元素的n-1的字符为以上求得的编码值, 根据之前的规则,第一个元素最后补0,第二个元素最后补1,则完成 该行的第一二个元素的编码最后将该行的其他元素按照I矩阵c中第n-i行第j+1列的值等于对 应于a矩阵中第n-i+1行中值为J+1的前面一个元素的位置在c矩阵 中的编码值“的原则进行赋值,重复以上过程即可完成huffman编码。3计算信源爛和平均码长,其比值即为编码密码效率。四、Huffman编码的Mat lab源程序p二i nput (p lease i nput a number :?)%提示输入界面if p(i) 0fpr i ntf (n The

6、probab iI i t i es in huffman can not less than 0! rV );p=inputC please input a number:)%如果输入的概率数组中有小于0的值,则重新输入概率数组sum of the probabi lities in huffman can more than 1 ! rT );input a number:)%如果输入的概率数组总和大于1,则重新输入概率数组%对概率数组q进行从小至大的排序,并且用I数组返回 一个数组,该数组表示概率数组q排序前的顺序编号a (ir:) = I (1:ni+1) , zeros (1fiD%

7、由数组I构建一个矩阵,该矩阵表明概率合并时的顺序,用于后面的编码q=q(1) +q (2) , q(3:n), 1;%将排序后的概率数组q的前两项,即概率最小的ifendabs (sum(p) 1 )0 fpr intf (n The p二inputCpleaseendq二P;a二zeros (n1.n);for i=1: n-1q, I 二sort (q)%生成一个n-1行n列的数组n二length(p);两个数加和,得到新的一组概率序列end for i=1:n-1c(i, 1 :n*n)二blanks (n*n);%生成一个n-1行n列,并且每个元素的的长度为n的空白数组,C矩阵用于进行

8、huffman编码,并且在编码中与a矩阵有一定的对应 关系endC (n1, n)二O;%由于a矩阵的第n-1行的前两个元素为进行huffman编码加和运算时所得的最c(n-1, 2*n)二I5;后两个概率,因此其值为0或1,在编码时设第n-1行的第一个空白字符为0,第二个空白字符1。for i=2:n1c ( n i, 1 : n1)=c ( n i +1, n* (f i nd (a (n i +1 , : ) 1 ) ) (n2 ) : n (find (a(ni+1, : )=D) )%矩阵c的第n-i的第一个元素的n-1的字符赋值为对应于a矩阵中第n-i+1行中值为1的位置在c矩阵中

9、的编码值c (ni, n)二0根据之前的规则,在分支的第一个元素最后补0c(ni,n+1:2*n-1)=c (n-i, 1:n-1)%矩阵c的第n-i的第二个元素的n-1的字符与第n-i行的第一个元素的前n-1个符号相同,因为其根节点相同c(ni, 2*n)二r%根据之前的规则,在分支的第一个元素最后补1for j=1:i-1c (ni, (j+1) *n+1: (j+2)*n)二c (ni +1, n* (f i nd (a (n- i +1, :)=j+1) 1) +1: n *find (a(n-i+1, : )=j+1) )%矩阵c中第n-i行第j+1列的值等于对应于a矩阵中 第n-i

10、+1行中值为j+1的前面一个元素的位置在c矩阵中的编码值endend%完成huffman码字的分配for i=1: nh (i, 1:n)=c(1, n*(find (a(1, : )=i)-1)+1:find (a (1, :) = i) *n)%用h表示最后的huffman编码,矩阵h的第i行的元素对应于矩阵c的第一 行的第i个元素II (i) = length (find (abs(h (i,:)=32)% 计算每一个huffman编码的长度endl=sum(po*l I) ;%计算平均码长fpr intf(n huffman code: n);hhh二sum(p。*(I og2 (p)

11、 ) ;%计算信源爛fpr i ntf (n the huffman effciency:n);t二hh/1%计算编码效率五、程序运行结果(1)如果输入正确的概率矢量,结果如下:p I ease i nput a number : 0. 32 0. 18 0。05 0。10 0。15 0. 2p =0. 32000. 1800 0o 05000。10000。15000。2000huffman code:h =11001010101110001the huffman effciency:t二0. 9774(2)如果输入不正确的概率矢量,结果如下:p Iease i nput a number:

12、-0。2 0。5 0。3 0.4huffman code: h二01100111010001011the huffman effciency:t二0。9894六、实验总结1、在该实验的过程中,利用一个矩阵记录每次排序前概率的所在位置, 是该实验的关键,在编码的过程中利用该矩阵就能比较容易进行huffman编码。2、通过这个实验,对huffman编码的具体实现原理了解的更加深刻,在 实验的过程中也遇到了一些问题,通过查找资料和相关书籍得到了解决, 总的来说, 在完成该实验的过程中, 还是学到了比较多的知识, 包括使 对一些mat lab语句的掌握的更加熟练,完成算法必须要有一个整体 的把握等等。-0o 20000.5000 0o 30000. 4000The probabi I ities in huffman can notI ess than 0!p I ease i nputp =Oo 6000a number:

温馨提示

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

最新文档

评论

0/150

提交评论