- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据压缩实验报告.
实验一 常见压缩软件的使用
一、实验目的
使用一些常见的压缩软件,对数据压缩的概念、分类、技术和标准形成初步的认识和理解。
二、实验要求
1.认真阅读实验指导书,按实验步骤完成实验内容。
2.实验过程中注意思考实验提出的问题,并通过实验解释这些问题。
3.通过实验达到实验目的。
三、实验环境
计算机硬件:CPU处理速度1GHz以上,内存258M以上,硬盘10G以上
软件:Windows操作系统2000或XP。
四、实验内容
使用WinZip或WinRAR两种压缩软件分别对文本文件(.txt,.doc)、程序源代码文件(.c)、数据文件(.dat)、二进制目标代码文件(.obj)、图像文件(.bmp)、音频文件(.wav)和视频文件(.avi,.wmv)进行压缩,分别计算出压缩率,判断这两种压缩软件采用的是可逆压缩还是不可以压缩,猜测其可能用到了那些压缩(编码)技术?
使用jpegimager、TAK和BADAK分别进行图像、音频和视频的压缩,体验其压缩效果。
使用bcl程序对文本文件、程序源代码文件、数据文件、二进制目标代码文件、图像文件等进行多种统计编码技术的压缩,包括香农-费诺(shannon-fano)编码、霍夫曼(huffman)编码、游程编码rle、字典编码lz等,记录每种压缩方法对不同类型文件的压缩效果并进行比较,结合所学知识,解释其中的原因。
五、实验步骤
1、下载并打开WinZip和WinRAR两种压缩软件
2、分别新建两个文档:qqjj.winzip 和winrar。添加所要压缩的文件:文本文件(.txt,.doc)、程序源代码文件(.c)、数据文件(.dat)、二进制目标代码文件(.obj)、图像文件(.bmp)、音频文件(.wav)和视频文件(.avi,.wmv)进行压缩,如图所示:
3、WinZip压缩软件可以直接看出各文件的压缩率,而winrar压缩软件不能直接看出各文件的压缩率,要在winrar压缩软件的屏幕上只显示一个压缩文件时,右健该压缩文件,点击显示信息方可看到该压缩文件的压缩率。例如black的压缩率,如图所示:
用类似的方法可以看到其它文件的压缩率。Microsoft.txt为48%,outline.doc为18%,shannonfano.c为25%,,shannonfano.obj为39%,tu.bmp为1%,star.wav为95%,clock.avi六、实验结论
WinZip和WinRAR两种压缩软件采用的是可逆压缩,WinRAR是通过牺牲压缩效率来增强压缩比的!winzip在现有压缩文件里再添加文件比WINRAR更快。追求速度选WINZIP,追求功能选WINRAR r元Huffman编码的方法;
了解Huffman编码效率及冗余度的计算;
3、了解用matlab实现Huffman编码的方法。
二、实验要求
掌握了解霍夫曼编码的原理和过程
三、实验内容(叙述操作过程,提交主要程序段)
打开软件。输入以下程序,保存运行即可得到实验结论。
function [h,l]=huffman(p)
p=[0.1 0.3 0.05 0.09 0.21 0.25];
if (length(find(p0))~=0)
error(Not a prob,negative component);
end
if (abs(sum(p)-1)10e-10)
error(Not a prob.vector,component do not add to 1)
end
n=length(p);
q=p;
m=zeros(n-1,n);
for i=1:n-1
[q,l]=sort(q); %对q排序,排序结果存放在q中,元素位置存放在l中
m(i,:)=[l(1:n-i+1),zeros(1,i-1)];
q=[q(1)+q(2),q(3:n),1];
end
for i=1:n-1
c(i,:)=blanks(n*n);
end
c(n-1,n)=0; %c存放编码,开始编码
c(n-1,2*n)=1; %先设置第一次的两个分支,2*n是为了拉开每个编码的距离,以便观看,可查看c的变化
for i=2:n-1 %继续编码
c(n-i,1:n-1)=c(n-i+1,n*(find(m(n-i+1,:)==1))...
-(n-2):n*(find(m(n-i+1,:)==1)));
c(n-i,n)=0;
c(n-i,n+1:2*n-1)=c(n-i,1:n-1);
c(n-i,2*n)=1;
文档评论(0)