中南大学
《信息论与编码》实验报告
题 目 信源编码实验 指导教师 学 院 专业班级
姓名 学号 日期
目录
一、香农编码……………………………………….....3
实验目的.................................................................................3 实验要求.................................................................................3 编码算法.................................................................................3 调试过程.................................................................................3 参考代码.................................................................................4 调试验证.................................................................................7 实验总结.................................................................................7
二、哈夫曼编码……………………………………….8
实验目的.................................................................................8 实验原理.................................................................................8 数据记录.................................................................................9 实验心得................................................................................10
一、香农编码
1、实验目的
(1)进一步熟悉Shannon编码算法; (2)掌握C语言程序设计和调试过程中数值的进制转换、数值与字符串之间
的转换等技术。
2、实验要求
(1)输入:信源符号个数q、信源的概率分布p;
(2)输出:每个信源符号对应的Shannon编码的码字。 3、Shannon编码算法
1:procedure SHANNON(q,{Pi})
2: 降序排列{Pi} 3: for i=1 q do 4: F(si) ?p(sk)i?1k?15:li[1/p(si)]log
26:将累加概率F(si)(十进制小数)变换成二进制小数。 7:取小数点后li个二进制数字作为第i个消息的码字。
8:end for
9:end procedure
------------------------------------------------------------------------------------------------------------------ 4、调试过程
1、fatal error C1083: Cannot open include file: 'unistd.h': No such file or directory
fatal error C1083: Cannot open include file: 'values.h': No such file or directory
原因:unistd.h和values.h是Unix操作系统下所使用的头文件 纠错:删去即可
2、error C2144: syntax error : missing ')' before type 'int' error C2064: term does not evaluate to a function
原因:l_i(int *)calloc(n,sizeof(int)); l_i后缺少赋值符号使之不能通过编译
纠错:添加上赋值符号