信息论与编码课程期中作业报告
班级:06 通信班 学 号:0656061
姓名:郑旅军 指导老师:程卫军
本次程卫军老师给定的信息论与编码课程期中作业要求如下:
根据香农编码,费诺编码和哈夫曼编码的最佳编码思想,运用 C 语言或 Matlab 语言任
选 2 个给予分别实现,其中哈夫曼编码必选.
基本要求(15):
1.输入任意个数的信源符号
2.输入任意大小的概率分布(ΣPi=1)
3.哈夫曼编码给出方式选择
4. 输出编码结果
5.输出信源熵,平均码长,编码效率等
6.编程加注解
附加要求(5):
1.能实现哈夫曼多进制(元)编码(3 进制)
或 2.能实现哈夫曼多重(扩展)编码(2 重,信源 2-3 个符号)
上交方式:
1. 电子版和纸质版
2. 要一一测试
3. 截至时间:12 月 30 日前
4. 不可抄袭,雷同者得分=作业得分/雷同者人数
本人选择做的是香农编码和哈夫曼编码,实现语言是 C 语言。具体实现过程如
下:
依照香农编码方法:
⑴ 将信源符号按概率从大到小的顺序排列,
p(a1)≥ p(a2)≥…≥ p(an)
⑵ 确定满足下列不等式的整数 Ki ,
-log2 p(ai)≤ Ki <1-log2 p(ai)
⑶ 令 p(a1)=0,用 Pi 表示第 i 个码字的累加概率,
⑷ 将 Pi 用二进制表示,并取小数点后 Ki 位作为符号 ai 的编码。
我的基本算法如下:
1. 输入任意个信源符号个数
2. 输入信源符号的概率
3. 将各信源符号概率进行降序排列
4. 计算累加概率 P[i]
5. 计算各符号概率的负对数,以确定码字长度
6. 取累加概率 P[i] 的小数部分,计算码字
评论0