1、 信息论与编码课程设计报告信息论与编码课程设计报告 设计题目:设计题目: 统计信源熵与香农编码统计信源熵与香农编码 2 目 录 一、 设计任务与要求. 3 1、 统计信源熵 3 2、香农编码 . 3 二、 设计思路. 3 1、统计信源熵 . 3 2、香农编码: . 4 三、 设计流程图. 5 1、统计信息熵 . 5 2、香农编码 . 6 四、 程序运行及结果. 7 1、统计信息熵 . 7 2、香农编码 . 8 五、 心得体会. 9 六、 参考文献 10 附录. 11 3 一、一、 设计设计任务任务与要求与要求 1 1、 统计信源熵统计信源熵 要求:统计任意文本文件中各字符(区分大小写)数量,计
2、算字符概率,并 计算信源熵。 2 2、香农编码香农编码 要求:任意输入消息概率,利用香农编码方法进行编码,并计算信源熵和编 码效率。 二、二、 设计思路设计思路 本次课程设计中主要运用 C 语言编程以实现任务要求, 分析所需要的统计量 以及相关变量,依据具体公式和计算步骤编写语句,组成完整 C 语言程序。运行 环境为 VC+6.0。 1 1、统计统计信源熵信源熵 定义:信源各个离散消息的自信息量的数学期望为信源的平均信息量,一般 称为信源的信息熵, 也叫信源熵或香农熵, 有时称为无条件熵或熵函数, 简称熵, 记为 H(X) 。 计算公式:)(log)(P)( 1 i n i i xPxXH 。
3、 统计信源熵就是对一篇英文文章,或者是输入一段字符串,通过对其中的 a,b,c,d/A,B,C,D.(区分大小写)和数字符号 1,2,3,4以及各个符号 如: , 。 !等统计符号的个数 N 和每一个符号的数目 n,有这个公式 P=n/N 可 得每个字母的概率, 最后又信源熵计算公式 )(log)(P)( 1 i n i i xPxXH , 可计 4 算出信源熵 H,所以整体步骤就是先统计出英文段落的总字符数,或者是输入字 符串的总个数。包括字母(区分大小写) 、数字、标点等,然后再统计每个字符 的个数,即每遇到同一个字符就+1,直到算出每个字符的个数,进而算出每个 字符的概率,再由信源熵计算
4、公式计算出信源熵。 2 2、香农编码:、香农编码: 香农编码主要通过一系列步骤支出平均码长与信源之间的关系, 同时使平均 码长达到极限值,即选择的每个码字的长度k i 满足下式: iII xx i ,1)()( iik 具体步骤如下: 1. 将信源消息符号按其概率从大到小排列 12n pxpxpx 2. 确定满足下列不等式的整数码长Ki loglog1 iii pxKpx 3. 令P1=0,计算第i个消息的累加概率 1 1 i ik k Ppx 4. 将累加概率Pi变换成二进制数,取小数点后Ki位为该消息的码字 在香农编码中对于求解编码效率主要是依靠这个公式:R=H(X)/K,其中 1 ()
5、n ii i Kp xK 对于求解信源熵主要依靠公式: n 1 ()log ii i HXpxpx 5 三、三、 设计流程图设计流程图 1 1、统计信息熵统计信息熵 开始开始 统计字符数统计字符数 统计同一字符统计同一字符 出现的次数出现的次数并输出并输出 计算并计算并输出每输出每 个字符的概率个字符的概率 输入输入是否为是否为字符字符 是 不计入统计不计入统计 否 计算信息熵计算信息熵并输出并输出 结束结束 输入字符输入字符 6 2 2、香农编码香农编码 开始开始 输入输入X X的的个数个数 累加概率累加概率是否为是否为 1 1 是是 重新输入重新输入 输入输入 P P(x x)的)的概率分
6、布概率分布 把概率把概率重新排序重新排序 计算码字和码长计算码字和码长 计算信息熵计算信息熵和编码效率和编码效率 输输 出出 7 四、四、 程序运行及结果程序运行及结果 1 1、统计信息熵统计信息熵 8 2 2、香农编码香农编码 9 五、五、 心得体会心得体会 这真是一次有意义的学习旅程。 在设计期间, 我和我的团队一直沉浸于探索、 探讨之中,各种有意思的想法层出不穷。我们总是想尽可能的把课程设计做的足 够的完美,足够的精彩,可是同时又不得不面临一个又一个的技术难题。有些经 过我们的努力,通过不断地修改不断的翻阅资料得以解决,可是仍有好多的的问 题是我们苦思冥想所参索不透的!真是知识用时方恨少啊! 课程设计很是考察个人能力和团队合作协调能力, 在面对自己所不熟悉甚至 不了解的问题时,是怎样一步步的设计完成给定的任务,及时有成效的解决面临 的问题的。 从整