霍夫曼编码(含源程序)

霍夫曼编码(含源程序)

ID:42146604

大小:325.27 KB

页数:13页

时间:2019-09-09

霍夫曼编码(含源程序)_第1页
霍夫曼编码(含源程序)_第2页
霍夫曼编码(含源程序)_第3页
霍夫曼编码(含源程序)_第4页
霍夫曼编码(含源程序)_第5页
资源描述:

《霍夫曼编码(含源程序)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、多媒体技术基础实验报告——霍夫曼编码学院:电子工程与光电技术学院专业:电子信息工程姓名:学号:任课老师:康其桔实验时间:一、实验内容及要求1、使用Matlab编程实现霍夫曼编码2、通过键盘输入字符串3、在屏幕上显示编码结果二、实验原理霍夫曼编码是霍夫曼在1952年提出和描述的“从下到上”的爛编码方法。根据给定数据集中各元索所出现的频率來压缩数据的一种统计压缩编码方法。这些元素(如字母)出现的次数越多,其编码的位数就越少。其基本步骤为:(1)将压缩的各字符的出现概率按减少(或增加)的顺序进行排列。(2)将两个最小的概率进行组合相加得到一个新概率将这一新概率与其它概率一起继续执行1和2的操作直至

2、最后概率为1.0。⑶对每对组合中的概率较大者指定为1,较小者指定为0。(4)画出由每个信源符号概率到1.0处的路径记下路径的1和0。⑸对每个信源符号由从右到左写出1/0序列,对概率较高的标1,对概率较低的标0(或对概率较高的标0,对概率较低的标1),就得到了对应的Huffman码。下面举个例子来说明霍夫曼编码的具体过程。设需要编码的信息为:BACDEBACDEBACDEBADEBAEBABABABB,统计各个字符出现的次数分别为B(10次)、A(8次)、C(3次)、D(4次)、E(5次)。各个字符出现的概率为B(10/30)、A(8/30)、E(5/30).D(4/30)>C(3/30)o霍

3、夫曼编码的过程如下:B(10/30)A(8/30)E(5/30)D(4/30)C(3/30)18/30012/3030/30B:llA:10E:00D:011C:010霍夫曼编码后平均码长为2x(10/30+8/30+5/30)+3x(4/30+3/30)=2.23b。而信源爛H=2.19九由此,我们可以看出,霍夫曼编码结果已经很接近理想信源爛。三、设计方案设计的流程图如下:读入字符串并去除空格统计字符种类及概率霍夫曼编码霍夫曼解码>各模块设计(一)读入字符串并去除空格在Matalb中使用语句inputstrin萨input('请输入需要编码的字符:',‘s'),输入的字符串存入char型数

4、组inputstring中。去除空格的思想为:输出数组inputlettersi>length(inputletters)?inputletters(i-spacermmber)=inputstring(i);输岀的inputletters数组存储的是输入字符串去除空格后的字符集的ASCII值,如果需要显示字符需要用语句:disp(char(inputletters))。这一部分代码如下:inputstring二input('请输入需要编码的字符:’,‘s');%输入字符并存储spacenumber=O;%存储空格数目fori=l:length(inputstring)ifabs(input

5、string(i))==32spacenumber=spacenumber+l;continueelseinputletters(i-spacenumber)=inputstring(i);endenddisp([,去除空格后字符为:’,char(inputletters)])(-)统计字符种类及概率统计字符的种类,需要去除输入字符屮的重复字符,并存入数组letters«P,其基本流程图如下:letters(l)=inputieIters(1)输出矩阵letters这一部分的程序如下:letters(l)二inputletters(1);form=2:length(inputletters)

6、repeatn=0;%定义一个数记录是否冇重复forn二1:length(letters)ifletters(n)=二inputletters(m)repeatn=rcpeatn+l;endendifrepeatn==0letters(length(letters)+1)二inputletters(m);endend概率的统计即是统ipletters中每个元索在inputletters岀现的次数,除以总次数即可得到每个字符出现的概率。概率统计的程序如2forp二l:length(letters)repeatn=0;%计算巫复次数forq=l:lcngth(inputletters)iflet

7、ters(p)==inputletters(q)repeatn=repeatn+l;endendletterp(p)=repcatn/length(inputlcttcrs);end对得到概率letterp进行降序排序得到huffmanprob,并使字符集与概率相对应生成字符集huffamnletterso这一过程主要是为了方便输出字符集的输出。这一部分的程序如下:[huffmanprob,sortindex

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。