欢迎来到天天文库
浏览记录
ID:38740432
大小:661.50 KB
页数:42页
时间:2019-06-18
《中南大学信息论与编码编码部分实验报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、信息论与编码编码部分实验报告课程名称:信息论与编码实验名称:关于香农码费诺码Huffman码的实验学院:信息科学与工程学院班级:电子信息工程1201姓名:viga学号:指导老师:张祖平日期:2014年1月3日42目录⊙实验目的及要求1.1实验目的………………………………………………41.2开发工具及环境………………………………………41.3需求分析与功能说明…………………………………4⊙实验设计过程2.1用matlab实现香农码、费诺码和Huffman编码2.1.1说明………………………………………………62.1.2源代码……………………………………………72.1.3运行结果(截图
2、)………………………………192.2用CC++实现香农码2.2.1说明………………………………………………222.2.2源代码……………………………………………232.2.3运行结果(截图)………………………………262.3用CC++实现Huffman码2.3.1说明………………………………………………262.3.2源代码……………………………………………292.3.3运行结果(截图)………………………………362.4用CC++实现费诺码2.4.1说明………………………………………………37422.4.2源代码……………………………………………372.4.3运行结果结果(截图
3、)…………………………40⊙课程设计总结……………………………………………42⊙参考资料4.1课程设计指导书……………………………………4342实验目的及要求1.1实验目的1.掌握香农码、费诺码和Huffman编码原理和过程。2.熟悉matlab软件的基本操作,练习使用matlab实现香农码、费诺码和Huffman编码。3.熟悉C/C++语言,练习使用C/C++实现香农码、费诺码和Huffman编码。4.应用Huffman编码实现文件的压缩和解压缩。1.2开发工具及环境MATLAB7.0、wps文字、红精灵抓图精灵2010Windows7系统环境1.3需求分析与功能说明1、使用ma
4、tlab实现香农码、费诺码和Huffman编码,并自己设计测试案例。2、使用CC++实现香农码、费诺码和Huffman编码,并自己设计测试案例。3、可以用任何开发工具和开发语言,尝试实现Huffman编码应用在数据文件的压缩和解压缩中,并自己设计测试案例。42具体要求:读入有关信源的文本文件(测试用例,里面为每个符号的概率,概率数值用,隔开),然后分别用matlab实现香农码、费诺码和Huffman编码,并计算各个码的平均码长,编码效率,并用matlab图示出来(可以是曲线图或直方图),再尝试对同样的信源用CC++实现香农码、费诺码和Huffman编码。文本文件例如infoso
5、urce.txt。文件里面的内容为0.4,0.2,0.1,0.1,0.15,0.05(,可能是全角或半角)。42实验设计过程2.1用matlab实现香农码、费诺码和Huffman编码2.1.1说明(1)使用matlab实现香农码、费诺码和Huffman编码,并自己设计测试案例。具体要求:读入有关信源的文本文件(测试用例,里面为每个符号的概率,概率数值用,隔开),然后分别用matlab实现香农码、费诺码和Huffman编码,并计算各个码的平均码长,编码效率,并用matlab图示出来(直方图)文本文件例如gailv.txt我测试的案例为0.40.20.10.10.150.05,存在ga
6、ilv.txt这个文本文档中。用“loadgailv.txt”语句读入文本文档中的概率分布。(2)编码部分设计:香农编码:1、将概率序列按降序排序,为方便,还是记作p,在编程时调整一下就行。2、算累加概率B(i)=p(i-1)+B(i-1);,i=0..i-1,视B(0)=03、算码长C=-log2(p);N=ceil(C);[ceil函数为取不小于自变量的最小整数的函数]4、将pa(i)换成二进制表示,取小数前k(i)位为c(i)费诺编码:1、将概率序列排序,为方便,还是记作p,在编程时调整一下就行。422、按编码进制数将概率分组,尽量使每组的概率和接近。3、给每组分配一位码元(
7、0,1,。。。)4、对每一组按同样地方法划分,直到每个符号有唯一码字。哈夫曼编码:可以用哈夫曼树的观点来看。1、选取概率最小的两个节点a,b2、将他们合并为c加入原概率序列3、从c指向a的边标为0,向b的边标为14、重复到仅有一棵树为止。5、每个符号的码字就是从根走到该符号的所有边上的码元连接起来。2.1.2源代码1、程序总程序(源文件见zong.m,文本文档见gailv.txt)%loadmydataA;%A是原始概率loadgailv.txt;A=gailv;[m
此文档下载收益归作者所有