无损数据压缩实验报告

无损数据压缩实验报告

ID:22302581

大小:112.73 KB

页数:8页

时间:2018-10-28

无损数据压缩实验报告_第1页
无损数据压缩实验报告_第2页
无损数据压缩实验报告_第3页
无损数据压缩实验报告_第4页
无损数据压缩实验报告_第5页
资源描述:

《无损数据压缩实验报告》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、多媒体技术基础实验报告院系:自动化学院班级:11102003姓名:胡嘉懿学号:1110200302•实验名称:无损压缩编码实验•实验内容:任选一种无损编码方式,通过C++编程实现。•实验要求:1)字符屯的输入是手工输入的;2)通过程序实现编码,敁终在屏幕上显示编码结果,例如,如果选川huffman编码,则要显示字符串的编码以及乎均码长;3)毎人交一份实验报吿电子版,以学号作为文件夾的名称,其中包括源程序。•算法思想按输入字符Ascii码值递增的顺序生成Hash表,并进行权重统计;将Hash表中元素生成为Huffman树■叶子节点;对于所有无父的节点进行搜

2、索,将次小和最小的节点作为子节点创建父节点(规定最小的总是右子节点,并总是标记为1);直到从剩下一个没柯父节点的根节点;对huffman树进行编码,采川递归的方法进行扫描,同吋计算码长;最后将叶子节点数据写冋Hash表;川Hash表的编码数据对原数据进行编码;统计各叶子节点的码长來进行〒均码长的计算。Hash数组为一个长为128(ASCii)的数组,每个元素存储对应字符出现的频率和编码素结构:统计权重对J、V:编码编码长度Huffman数组是一个按照节点创建顺序构造的数组元素结构:对应Ascii码,对于父节点,定为-1权重父节点位置所在子树标识(规定0为

3、左子树,1为右子树)节点编码(为了显示方便使用字符串)编码长度哈夫玆码的编码性能与其包含字符种类的多少有较人关系,对于最坏情况,即-个包含全部Ascii字符,每个字符只!li现一次的文本,算法本身性能最低。•源程序^include^include〈string,h〉#definefileLenth5000typedefstruct{intvalue;charcodc[512];intcodeLen;}hashElement;typedefstruct{intascNum;intvalue;intfPoint:intlFlag;ch

4、arcode[512];intcodeLen;}huffElement;charsources[fileLenth];hashElementhashArray[128];huffElementhuffTree[512];inthuffTreeNum=0;inthuffTreeLeafNunFO;intwholeValue=0;intsumCodeLen二0;voidinitALLO{inti;for(i=0;i<256;i++){hashArray[iLvalue-0;strcpy(hashArray[i].code,;hashArray[i].code

5、Len=-l;}for(i=0;i<512;i++){huffTree「i].ascNum='l;huffTree[i].value=0;huffTree[i].fPoint=-l:huffTree[i].lFlag=-l;strcpy(huffTree[i].code,huffTree[iLcodeLen=-l;inthuffTreeEncode(inthuffTreeP){intFP;if(huffTree[huffTreeP].fPoint==-l){huffTreeThuffTreePl.codeLen=0;returnhuffTreeP;}if

6、(huffTree[huffTreeP].codeLen!=-1)returnhuffTreeP;else{FP=huffTreeEncode(huffTree[huffTreeP].fPoint);strcpy(huffTree[huffTreeP].code,huffTree[FP].code);if(huffTree[huffTreePJ.lFlag--0)streat(huffTreeLhuffTreeP].code,〃0〃);elseif(huffTree[huffTreeP].lFlag==l)streat(huffTree[huffTree

7、P].code,〃1〃);huffTree[huffTreeP].codeLen=huffTree[I?P].codeLen+1;returnhuffTreeP;}}intniainO{inti;introotElag-0;intexMinium=-l;intMiniumV=fi1eLenth+1,exMiniumV=fileLenth+1;c0Ut〈〈"请输入任意字符串"<〈’’;cin.get1ine(sourceS,5000);initALLO:for(i~0;i

8、]].valuc++;}for(i=0;i<256;i++){if(hashAr

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

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

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