1、信息论与编码课程设计 1 信息论与编码课程设计报告信息论与编码课程设计报告 设计题目:统计信源熵与哈夫曼编码 专业班级 学 号 学生姓名 指导教师 教师评分 2015 年 3 月 25 日 信息论与编码课程设计 2 目目 录录 一、设计任务与要求.3 二、设计思路.3 三、设计流程图.5 四、程序运行及结果.6 五、心得体会.8 参考文献.9 附录:源程序.10 信息论与编码课程设计 3 一、 设计任务与要求 1.1 设计目的 信息论与编码是信息、通信、电子工程专业的基础,对理论研究和工程应用 均有重要的作用。通过对本次课程设计,我们将学到的理论知识用于实践,用软 件编写程序实现具体的计算和逻
2、辑问题,使我们对所学知识有更深层次的认知, 加深对课本知识的理解。 1.2 设计要求 (1)统计信源熵 要求:统计任意文本文件中各字符(不区分大小写)数量,计算字符概率, 并计算信源熵。 (2)哈夫曼编码 要求:任意输入消息概率,利用哈夫曼编码方法进行编码,并计算信源熵和 编码效率。 二、 设计思路 2.1 编码效率计算公式: K X)( 其中 H(X)为信源熵,K 表示平均码长。 2.3 变长码的编码方法 能获得最佳码的编码方法主要有: 香农(Shannon) 费诺(Fano) 霍夫曼(Huffman) 本设计以霍夫曼编码为例; (1)将信源消息符号按其出现的概率大小依次排列 p(x1)p(
3、x2) p(xn) (2)取两个概率最小的符号分别配以 0 和 1,并将这两个概率相加作为一个新 符号的概率,与未分配码元的符号重新排队。 信息论与编码课程设计 4 (3)对重排后的两个概率最小符号重复步骤 2 的过程。 (4)继续上述过程,直到最后两个符号配以 0 和 1 为止。 (5)从最后一级开始,向前返回得到各个信源符号所对应的码元序列,即相应 的码字。 2.3 具体设计思路 (1)统计信源熵 在 VC+环境中进行编程 (1)运行程序,在对话框里输入一段英文,将 26 个英文字母及空格作为信源。 (2)计算每个字母出现的次数(不区分大小写) ,再通过计算信源总大小来计 算在本篇文章中每
4、个字母出现的概率。 (3)通过信源熵计算公式来计算信源熵。 (2) 哈夫曼编码 在VC+环境中进行编程 (1) 输入概率矩阵,并检验是否正确,即各概率不能小于零,总概率之和等 于一。 (2) 建立各概率符号的位置索引矩阵 Index,利于编码后从树根进行回溯,从 而得出对应的编码 (3) 输出所需的哈弗曼编码。 (4) 计算信源熵,并计算平均码长,算出编码效率。 (5) 输出结果。 信息论与编码课程设计 5 三、 设计流程图 3.1 统计信源熵的设计思路 打开文件 计算各字母个数 计算各字母概率 计算各字母信源熵 输出结果 3.2 哈夫曼编码设计思路 判断输入概率是否正确 建立各概率符号的位置
5、索引矩阵 根据索引矩阵进行回溯编码 输出所需的哈弗曼编码 计算信源熵 计算平均码长和编码效率 输出结果 信息论与编码课程设计 6 四、 程序运行及结果 4.1 统计信源熵程序运行结果 运行程序并输入: The most distant way in the world is not the way from birth to the end. it is when i sit near you that you dont understand i love u. The most distant way in the world is not that youre not sure i lov
6、e u. It is when my love is bewildering the soul but i cant speak it out. T 测试目的:检验程序是否正确。 检验方法:用验证法来检验;看中概率是否为一,并检测信源熵是否正确。 检验结果:程序运行结果正确。 如下为运行结果截屏 信息论与编码课程设计 7 4.2 哈夫曼编码程序运行结果 测试输入:0.20 0.19 0.18 0.17 0.15 0.10 0.01 测试目的:测试经常出现的信源符号是否对应较短的码长,检测程序运行结果是 否正确。 正确输出:10 11 000 001 010 0110 0111 信源熵为-2.60868 bit/符号 平均码长为 2.72 码元/符号 传送速率为 0.959075 bit/码元 实际输出:与争取而输出一样 检测结果:程序无错误 以下为运行结果截屏 信息论与编码课程设计 8 五、 心得体会 刚开始课程设计的时候,自己是毫无头绪的,不知