霍夫曼编码(含源程序).doc

霍夫曼编码(含源程序).doc

ID:48920214

大小:192.81 KB

页数:13页

时间:2020-02-06

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

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

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

2、相加得到一个新概率将这一新概率与其它概率一起继续执行1和2的操作直至最后概率为1.0。(3)对每对组合中的概率较大者指定为1,较小者指定为0。(4)画出由每个信源符号概率到1.0处的路径记下路径的1和0。(5)对每个信源符号由从右到左写出1/0序列,对概率较高的标1,对概率较低的标0(或对概率较高的标0,对概率较低的标1),就得到了对应的Huffman码。下面举个例子来说明霍夫曼编码的具体过程。11B:11A:10E:00D:011C:010设需要编码的信息为:BACDEBACDEBACDEBADEBAEBABABABB,统计各个字

3、符出现的次数分别为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)。霍夫曼编码的过程如下:018/30B(10/30)0030/30A(8/30)11E(5/30)012/307/30D(4/30)C(3/30)霍夫曼编码后平均码长为。而信源熵。由此,我们可以看出,霍夫曼编码结果已经很接近理想信源熵。三、设计方案设计的流程图如下:统计字符种类及概率霍夫曼编码霍夫曼解码读入字符串并去除空格..四、各模块设计(一)读入字符串

4、并去除空格在Matalb中使用语句inputstring=input('请输入需要编码的字符:','s'),输入的字符串存入char型数组inputstring中。去除空格的思想为:输出数组inputlettersi>length(inputletters)?i=i+1i=i+1,spacenumber=spacenumber+1判断数组inputstring的第i个字符是是空格?否inputletters(i-spacenumber)=inputstring(i);输出的inputletters数组存储的是输入字符串去除空格后的字

5、符集的ASCII值,如果需要显示字符需要用语句:disp(char(inputletters))。这一部分代码如下:inputstring=input('请输入需要编码的字符:','s');%输入字符并存储spacenumber=0;%存储空格数目fori=1:length(inputstring)ifabs(inputstring(i))==32spacenumber=spacenumber+1;continueelseinputletters(i-spacenumber)=inputstring(i);endenddisp(['

6、去除空格后字符为:',char(inputletters)])..(二)统计字符种类及概率统计字符的种类,需要去除输入字符中的重复字符,并存入数组letters中,其基本流程图如下:letters(1)=inputletters(1)m=m+1从第m个元素判断是否是letters中元素是否letters(length(letters)+1)=inputletters(m)m>length(inputletters)?输出矩阵letters这一部分的程序如下:letters(1)=inputletters(1);form=2:leng

7、th(inputletters)repeatn=0;%定义一个数记录是否有重复forn=1:length(letters)ifletters(n)==inputletters(m)repeatn=repeatn+1;endendifrepeatn==0letters(length(letters)+1)=inputletters(m);endend概率的统计即是统计letters中每个元素在inputletters出现的次数,除以总次数即可得到每个字符出现的概率。概率统计的程序如下:forp=1:length(letters)rep

8、eatn=0;%计算重复次数..forq=1:length(inputletters)ifletters(p)==inputletters(q)repeatn=repeatn+1;endendletterp(p)=repeatn/le

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

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

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