统计信源熵与哈夫曼编码毕业正文.doc
上传人:天马****23 上传时间:2024-09-12 格式:DOC 页数:18 大小:290KB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

统计信源熵与哈夫曼编码毕业正文.doc

统计信源熵与哈夫曼编码毕业正文.doc

预览

免费试读已结束,剩余 8 页请下载文档后查看

10 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

信息论与编码课程设计PAGE\*MERGEFORMAT18信息论与编码课程设计报告设计题目:统计信源熵与哈夫曼编码专业班级学号学生姓名指导教师教师评分2015年3月25日目录TOC\o"1-3"\h\z\uHYPERLINK\l"_Toc342895212"一、设计任务与要求3HYPERLINK\l"_Toc342895213"二、设计思路3HYPERLINK\l"_Toc342895214"三、设计流程图5HYPERLINK\l"_Toc342895215"四、程序运行及结果6HYPERLINK\l"_Toc342895216"五、心得体会8HYPERLINK\l"_Toc342895217"参考文献9HYPERLINK\l"_Toc342895218"附录:源程序10设计任务与要求1.1设计目的信息论与编码是信息、通信、电子工程专业的基础,对理论研究和工程应用均有重要的作用。通过对本次课程设计,我们将学到的理论知识用于实践,用软件编写程序实现具体的计算和逻辑问题,使我们对所学知识有更深层次的认知,加深对课本知识的理解。1.2设计要求(1)统计信源熵要求:统计任意文本文件中各字符(不区分大小写)数量,计算字符概率,并计算信源熵。(2)哈夫曼编码要求:任意输入消息概率,利用哈夫曼编码方法进行编码,并计算信源熵和编码效率。设计思路2.1编码效率计算公式:其中H(X)为信源熵,K表示平均码长。2.3变长码的编码方法能获得最佳码的编码方法主要有:&香农(Shannon)&费诺(Fano)&霍夫曼(Huffman)本设计以霍夫曼编码为例;(1)将信源消息符号按其出现的概率大小依次排列p(x1)≥p(x2)≥…≥p(xn)(2)取两个概率最小的符号分别配以0和1,并将这两个概率相加作为一个新符号的概率,与未分配码元的符号重新排队。(3)对重排后的两个概率最小符号重复步骤2的过程。(4)继续上述过程,直到最后两个符号配以0和1为止。(5)从最后一级开始,向前返回得到各个信源符号所对应的码元序列,即相应的码字。2.3具体设计思路(1)统计信源熵在VC++环境中进行编程(1)运行程序,在对话框里输入一段英文,将26个英文字母及空格作为信源。(2)计算每个字母出现的次数(不区分大小写),再通过计算信源总大小来计算在本篇文章中每个字母出现的概率。(3)通过信源熵计算公式来计算信源熵。(2)哈夫曼编码在VC++环境中进行编程输入概率矩阵,并检验是否正确,即各概率不能小于零,总概率之和等于一。建立各概率符号的位置索引矩阵Index,利于编码后从树根进行回溯,从而得出对应的编码输出所需的哈弗曼编码。计算信源熵,并计算平均码长,算出编码效率。输出结果。设计流程图3.1统计信源熵的设计思路3.2哈夫曼编码设计思路程序运行及结果4.1统计信源熵程序运行结果运行程序并输入:Themostdistantwayintheworldisnotthewayfrombirthtotheend.itiswhenisitnearyouthatyoudon'tunderstandiloveu.Themostdistantwayintheworldisnotthatyou'renotsureiloveu.Itiswhenmyloveisbewilderingthesoulbutican'tspeakitout.T测试目的:检验程序是否正确。检验方法:用验证法来检验;看中概率是否为一,并检测信源熵是否正确。检验结果:程序运行结果正确。如下为运行结果截屏4.2哈夫曼编码程序运行结果测试输入:0.200.190.180.170.150.100.01测试目的:测试经常出现的信源符号是否对应较短的码长,检测程序运行结果是否正确。正确输出:101100000101001100111信源熵为-2.60868bit/符号平均码长为2.72码元/符号传送速率为0.959075bit/码元实际输出:与争取而输出一样检测结果:程序无错误以下为运行结果截屏心得体会刚开始课程设计的时候,自己是毫无头绪的,不知道从哪里下手,最重要的原因是对C语言没有达到熟练的程度,自己不是很自信。但是万事开头难,什么困难只要踏出第一步,接下来就会一步步化解。为了更加熟练地用C语言程序进行编写,我与同组成员仔细地复习以前学过的书籍,经过一段时间后对语法的掌握更加地熟练。但是实际上在编写的时候,手打难免会碰到各类的问题,例