1 / 8
文档名称:

无损数据压缩实验报告.doc

格式:doc   大小:185KB   页数:8页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

无损数据压缩实验报告.doc

上传人:taoapp 2021/10/31 文件大小:185 KB

下载得到文件列表

无损数据压缩实验报告.doc

相关文档

文档介绍

文档介绍:多媒体技术基础
实验报告
院系:自动化学院
班级:11102003
姓名:胡嘉懿
学号:1110200302
·实验名称:无损压缩编码实验
·实验内容:任选一种无损编码方式,通过C++编程实现。
·实验要求:
字符串的输入是手工输入的;
2) 通过程序实现编码,最终在屏幕上显示编码结果,例如,如果选用huffman编码,则要显示字符串的编码以及平均码长;
3) 每人交一份实验报告电子版,以学号作为文件夹的名称,其中包括源程序。
·算法思想
按输入字符Ascii码值递增的顺序生成Hash表,并进行权重统计;
将Hash表中元素生成为Huffman树叶子节点;
对于所有无父的节点进行搜索,将次小和最小的节点作为子节点创建父节点(规定最小的总是右子节点,并总是标记为1);
直到只剩下一个没有父节点的根节点;
对huffman树进行编码,采用递归的方法进行扫描,同时计算码长;
最后将叶子节点数据写回Hash表;
用Hash表的编码数据对原数据进行编码;
统计各叶子节点的码长来进行平均码长的计算。
Hash数组为一个长为128(ASCii)的数组,每个元素存储对应字符出现的频率和编码
元素结构:
统计权重
对应编码
编码长度
Huffman数组是一个按照节点创建顺序构造的数组
元素结构:
对应Ascii码,对于父节点,定为-1
权重
父节点位置
所在子树标识(规定0为左子树,1为右子树)
节点编码(为了显示方便使用字符串)
编码长度
哈夫曼码的编码性能与其包含字符种类的多少有较大关系,对于最坏情况,即一个包含全部Ascii字符,每个字符只出现一次的文本,算法本身性能最低。
·源程序
#include<>
#include<>
#define fileLenth 5000
typedefstruct{
int value;
char code[512];
int codeLen;
}hashElement;
typedefstruct{
int ascNum;
int value;
int fPoint;
int lFlag;
char code[512];
int codeLen;
}huffElement;
char sourceS[fileLenth];
hashElement hashArray[128];
huffElement huffTree[512];
int huffTreeNum=0;
int huffTreeLeafNum=0;
int wholeValue=0;
int sumCodeLen=0;
void initALL()
{
int i;
for(i=0;i<256;i++)
{
hashArray[i].value=0;
strcpy(hashArray[i].code,"");
hashArray[i].codeLen=-1;
}
for(i=0;i<512;i++)
{
huffTree[i].ascNum=-1;
huffTr