信息论上机报告 Huffman编码对英文文本的压缩和解压缩和算术编码.docx
《信息论上机报告 Huffman编码对英文文本的压缩和解压缩和算术编码.docx》由会员分享,可在线阅读,更多相关《信息论上机报告 Huffman编码对英文文本的压缩和解压缩和算术编码.docx(8页珍藏版)》请在三一办公上搜索。
1、信息论上机报告 Huffman编码对英文文本的压缩和解压缩和算术编码信息论上级报告 题目一 算术编码 1题目要求 算术编码是把一个信源表示为实轴上0和1之间的一个区间,信源集合中的每一个元素都用来缩短这个区间。 算法流程 输入信源符号个数,信源概率分布,还有需要编码的符号序列, 根据概率可以算出初始编码间隔, High当前编码的上限, Low当前编码的下限, high中间变量,用来计算下一个编码符号的当前间隔的上限, low中间变量,用来计算下一个编码符号的当前间隔的下限, d当前间隔之间的距离。 扫描需编码的符号序列,确定编码空间 第1个编码符号的当前间隔为其初始的编码间隔, 第i个编码符号
2、的当前间隔为第i-1个编码后的Low,High), 第i+1个编码符号的当前间隔算法如下:high=Low+d*第i+1个初始编码符号对应的上限,low=Low+d*第i+1个编码符号对应的下限,然后High=high,Low=low,d=d*第i个编码符号的概率。 2.设计 设计思想: 其算法的主要算法基本思想:首先就是构造一个结构体用于存储信源的相关信息;接着就是初始化信源的相关信息,如初始化编码间隔;利用算术编码的原理构造编码方法,最后实现编码。 3.调试分析: 此算法主要就是算术编码方法的构造,利用算法中Initial_message函数初始化以后,根据初始化间隔完成编码序列的编码。在
3、调试的过程中经常遇到一些小问题,通过一步步的调试以及修改,问题一个的解决了。同时也遇到比较大的问题,就是编码方法过程的实现,最大的体会就是必须深入理解次编码方法的原理。 4.用户手册: 首先设置信源符号的个数和编码的序列长度,然后输入N个信源符号及其概率,如,a 空格 0.2输入,最后输入长度为n的信源符号序列,即长度为n要编码的序列。 5.流程图 开始 输入信源符号及其概率 初始化信源符号的初始间隔 输入要编码的序列 进行算术编码 6.测试结果: 输出编码结果 结束 7.源程序清单: #include #include #include #define N 4 /信源符号的个数 #defin
4、e n 7 /要编码的序列长度 struct ARC char mN; float PN; float LowN; float HighN; float low; float high; code; Initial_message /初始化编码间隔 float F=0; int i=0,j; printf(请输入%d个信源符号及其概率!n,N); for(i=0;iN;i+) scanf(%c %f,&code.mi,&code.Pi); getchar; for(j=0;jN;j+) code.Lowj=F; F=F+code.Pj; code.Highj=F; printf(信源符号 概率
5、 初始编码间隔n); for(j=0;jN;j+) printf(%c %f %f,%f)n,code.mj,code.Pj,code.Lowj,code.Highj); main int i=0; int Bcode10; char cn; char *p=NULL; char *q=NULL; float s,mid; Initial_message; printf(请输入长度为%d要编码的序列:,n); scanf(%s,c); p=c; q=code.m; while(q!=NULL)/判定第一个需要编码序列的第一符号所在的间隔 if(*p=*q) code.low =code.Low
6、 i; code.high =code.High i; printf(%cn%f,%f)n,code.mi,code.low ,code.high ); goto ss; else q+; i+; ss: p+; while(*p!=0)/利用算术编码的方法,求出编码的十进制结果 int k=0; float t; float pt=0; int k1; q=code.m; while(*q!=0) if(*p=*q) if(k=0) t=code.high -code.low ; code.low =code.low +t*pt; code.high =code.low +t*code.P
7、k; printf(%cn%f,%f)n,code.m k,code.low ,code.high ); goto xx; else k1=k; while(k1) t=code.high -code.low ; pt=pt+code.Pk1-1; k1-; code.low =code.low +t*pt; code.high =code.low +t*code.P k; printf(%cn%f,%f)n,code.m k,code.low ,code.high ); goto xx; else q+; k+; xx: p+; mid=(code.high-code.low )/2+cod
8、e.low ; s=2*mid; for(i=0;i1) Bcodei=1; s=s-1; else Bcodei=0; s=2*s; printf(%d,Bcodei); printf(n); 题目一 Huffman编码对英文文本的压缩和解压缩 1题目要求 根据信源压缩编码Huffman编码的原理,制作对英文文本进行压缩和解压缩的软件。要求软件有简单的用户界面,软件能够对运行的状态生成报告,分别是:字符频率统计报告、编码报告、压缩程度信息报告、码表存储空间报告。 2.设计 设计思想:首先构造一个结构体用于统计字符频率,然后把统计后的结果当作信源;接着用Haffman编码的方法对其编码,编码后
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 信息论上机报告 Huffman编码对英文文本的压缩和解压缩和算术编码 信息论 上机 报告 Huffman 编码 英文 文本 压缩 和解 算术
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-3280242.html