信息论与编码课程设计报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

信息论与编码课程设计报告

设计题目:统计信源熵与香农编码

专业班级

学号

学生姓名

指导教师

教师评分

2014年3月24日

目录

一、设计任务与要求 (2)

二、设计思路 (2)

三、设计流程图 (3)

四、程序运行及结果 (5)

五、心得体会 (6)

参考文献 (6)

附录:源程序 (7)

一、设计任务与要求

1、统计信源熵

要求:统计任意文本文件中各字符(不区分大小写)数量,计算字符概率,并计算信源熵。 2、香农编码

要求:任意输入消息概率,利用香农编码方法进行编码,并计算信源熵和编码效率。

二、设计思路

1、统计信源熵:

统计信源熵就是对一篇英文文章(英文字母数为N ),通过对其中的a,b,c,d/A,B,C,D.....(不区分大小写)统计每个字母的个数n ,有这个公式P=n/N 可得每个字母的概率,最后又信源熵计算公式H (x )=1(x )log (x )

n

i i i p p =-∑,

可计算出信源熵H,所以整体步骤就是先统计出英文段落的总字符数,在统计每个字符的个数,即每遇到同一个字符就++1,直到算出每个字符的个数,进而算出每个字符的概率,再由信源熵计算公式计算出信源熵。 2、香农编码:

香农编码主要通过一系列步骤支出平均码长与信源之间的关系,同时使平均码长达到极限值,即选择的每个码字的长度i k 满足下式:

(x )(x )1,i i i

i I I k ≤<+∀

具体步骤如下:

a 、将信源消息符号按其出现的概率大小依次排列为:12......n p p p ≥≥≥

b 、确定满足下列不等式的整数码长i k 为:(p )(p )1i i i lb lb k -≤≤-+

c 、为了编成唯一可译码,计算第i 个消息的累加概率:1

1(a )

i i k k p p -==∑

d 、将累加概率Pi 变换成二进制数。

e 、取Pi 二进制数的小数点后Ki 位即为该消息符号的二进制码字。

在香农编码中对于求解编码效率主要是依靠这个公式:R=H(X)/K,其中

1(a )n

i i

i k p k ==∑

对于求解信源熵主要依靠公式:H (x )=1(x )log (x )

n

i i i p p =-∑,

三、设计流程图

1、统计信源熵:

2、香农编码

四、程序运行及结果

1、统计信源熵:

2、香农编码:

五、心得体会

课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。在这个过程中,不仅锻炼了我们缜密的思维和坚持不解的毅力,更磨练了一个队伍的团结互助的精神,只有通过大家一起努力才能将课程设计的所有环节都顺利的完成,另外程序设计中我们遇到问题并解决问题的过程,使得我们独自探索并解决问题的能力了有了一个提高,这有利于我们以后的学习。

在此次课程设计中,我们主要是做了统计信源熵与香农编码这两个题目,初一看题目感觉应该很简单,但真正的去做的时候才发现并不是想象的那么简单,由于信息论与编码是年前学的,而课程设计是现在才做,所以经历一个寒假,整本书的知识点都忘得差不多了,所以不得不重新复习课本,以便于自己能好的完成这次的课程设计。另外就是对以前的大一学的C语言也是一个考验,虽然在平时也用一些相关方面的知识,但是相对完成此次的编程任务显然不太容易,所以这次课程设计不仅锻炼了我们做文档,做PPT的能力,也帮助我们对相关知识的做了一个整体复习。还有就是在此过程中,也遇到了一些自己不能解决的问题,就会请教其他组员,一起共同讨论,直到解决,这是的我们充分认识到了团队协作的重要性,也体验到了在问题得到解决的时候所独有的那份喜悦。也体会到了与队友的合作更是一件快乐的事情,只有彼此都付出,彼此都努力维护才能将作品做的更加完美。

我认为,在这学期的课程设计中,在收获知识的同时,还收获了阅历,收获了成熟,在此过程中,我们通过查找大量资料,请教老师,以及不懈的努力,不仅培养了独立思考,在各种其它能力上也都有了提高。更重要的是,在课程设计上,我们学会了很多学习的方法。而这是日后最实用的,真的是受益匪浅。要面对社会的挑战,只有不断的学习、实践,再学习、再实践。

参考文献

[1]曹雪虹,张宗橙.信息论与编码.北京:清华大学出版社,2007.

[2]王慧琴.数字图像处理.北京:北京邮电大学出版社,2007.

[3]刘宏.C++程序设计教程.武汉:武汉大学出版社,2005.

[4]杨永国,张冬明.Visual C++6.0实用教程.北京:清华大学出版社,2007.

[5] 陈运. 信息论与编码 [M]. 北京:电子工业出版社,2011.

[6] 姚领田.精通MFC程序设计 [M]. 北京:人民邮电出版社,2006.

[7] 傅祖芸.信息论—基础理论与应用(第二版).北京:电子工业出版社,2007.5

[8] 傅祖芸.信息论基础.北京:电子工业出版社,1989

[9] R W汉明.朱雪龙译.编码和信息理论.北京:科学出版社,1984

附录:源程序

1、统计信源熵:

#include

#include

void main()

{

int ch[50]={0};

int sum=0,n=0;

int i;

double p[50]={0};

double H=0;

char c;

printf("作者:于文达王晨杨帅张健\n");

printf("please input an essay:\n");

while((c=getchar())!='\n')

{

for (i=65;i<=90;i++)

{

if (i==c)

{

ch[i-65]++;

sum++;

}

}

for (i=97;i<=112;i++)

{

if(c==i)

{

ch[i-97]++;

sum++;

}

}

相关文档
最新文档