信息论和编码课程设计汇本

信息论和编码课程设计汇本
信息论和编码课程设计汇本

信息论与编码课程设计报告设计题目:统计信源熵、香农编码与费诺编码

专业班级:XXXXXXXXXXXX

姓名:XXXXXXXXXXXX

学号:XXXXXXXXXXXX

指导老师:XXXXXXXXXXXX

成绩:

时间:2015年3月31日

目录

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

二、设计思路 (2)

三、设计流程图 (5)

四、程序及结果 (7)

五、心得体会 (11)

六、参考文献 (12)

附录 (13)

一、 设计任务与要求

1. 统计信源熵

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

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

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

二、 设计思路

1、统计信源熵:

统计信源熵就是对一篇英文文章中的i 种字符(包括标点符号及空格,英文字母不区分大小写)统计其出现的次数count i (),然后计算其出现的概率()p i ,最后由信源熵计算公式:

1()()log ()n

i i n H x p x p x ==-∑

算出信源熵()H x 。所以整体步骤就是先统计出文章中总的字符

数,然后统计每种字符的数目,直到算出所有种类的字符的个数,进而算出每种字符的概率,再由信源熵计算公式计算出信源熵。在这里我选择用Matlab 来计算信源熵,因为Matlab 中系统自带了许多文件操作和字符串操作函数,其计算功能强大,所以计算信源熵很是简单。

2、香农编码

信源编码模型:

信源编码就是从信源符号到码符号的一种映射f ,它把信源输出的符号i a 变换成码元序列i x 。 1,2,...,,i i N f a i q x =→:

1:{,...,}

q S s a a ∈ 信源 1

2

{,...,}li

i i i i X x x x = 码元

1{,...,}

1,2,...,i q S a a i N ∈= 1,2,...,N i q =

1:{,...,}

r X x x x ∈ 码符号

N 次扩展信源无失真编码器

凡是能载荷一定的信息量,且码字的平均长度最短,可分离的变长码的码字集合都可以称为最佳码。为此必须将概率大的信息符号编以短的码字,概率小的符号编以长的码字,使得平均码字长度最短。能获得最佳码的编码方法主要有:香农

(Shannon )、费诺(Fano )、哈夫曼(Huffman )编码等。

香农第一定理: 离散无记忆信源为

121

2......()()()......

q q s s s S p s p s p s P ????=????????

熵()H S ,其N 次扩展为

1

212......

()()

()......N q q S p p p P αααααα????=??

??????

?

熵为()N H S ,码符号集为12(,,...,)r X

x x x =。先对信源N S 进行编码,总

可以找到一种编码方法,构成唯一可译码,使S 中每个信源符号所需的平均码长满足

()1()

log log N L H S H S r N N r

+>≥ 且当N →∞时有()()log lim N r N L H S H S N r →∞=

= ,

L 是平均码长1()N

q

i i i L p αλ==∑,i λ是i α对应的码字长度。

香农编码方法:

(1) 将信源消息符号按其出现的概率大小依次排列:12...n p p p ≥≥ (2)确定满足下列不等式整数码长i K 为

()()1i i i lb p K lb p -≤≤-+

(3)为了编成唯一可译码,计算第i 个消息的累加概率为

1

1()i i k k P p a -==∑

(4)将累加概率i P 变成二进制数。

(5)取i P 二进制数小数点后i K 位即为该消息符号的二进制码字。

3、费诺编码方法

(1)将信源消息符号按其出现的概率大小依次排列:12...n p p p ≥≥ (2)将依次排列的信源符号按概率值分为两大组,使两个组的概率之和近似相同,并对各组赋予一个二进制码元“0”和“1”。(3)将每一大组的信源符号再分为两组,使划分后的两个组的概率之和近似相同,并对各组赋予一个二进制符号“0”和“1”。 (4)如此重复,直至每个组只剩下一个信源符号为止。 (5)信源符号所对应的码字即为费诺码。

三、 设计流程图

由信源熵计算公式1()()log ()n

i i n H x p x p x ==-∑计算出信源熵

⑤ 2、香农编码

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

目录 一:实验原理----------------------------1 二:程序源代码--------------------------1 三:实验分析-----------------------------6 四:实验结论---------------------------7

赫夫曼编码 一:实验原理 哈夫曼编码的具体步骤归纳如下: ① 概率统计(如对一幅图像,或m幅同种类型图像作灰度信号统计),得到n个不同概率的信息符号。 ② 将n个信源信息符号的n个概率,按概率大小排序。 ③ 将n个概率中,最后两个小概率相加,这时概率个数减为n-1个。 ④ 将n-1个概率,按大小重新排序。 ⑤ 重复③,将新排序后的最后两个小概率再相加,相加和与其余概率再排序。 ⑥ 如此反复重复n-2次,得到只剩两个概率序列。 ⑦ 以二进制码元赋值,构成哈夫曼码字。编码结束。 哈夫曼码字长度和信息符号出现概率大小次序正好相反,即大 概信息符号分配码字长度短,小概率信息符号分配码字长度长。 C、哈夫曼编码的特点 (1)哈夫曼编码的构造顺序明确,但码不是唯一的(因以大赋1还是小的赋1而异;

(2)哈夫曼编码的字长参差不齐,硬件实现不方便; (3)只有在概率分布很不均匀时,哈夫曼编码才有显著的效果,而在信源分布均匀时,一般不使用哈夫曼编码。 二:程序源代码: #define MAXVALUE 10000 #define MAXLEAF 30 #define MAXNODE 59 #define MAXBIT 10 #define LENTH 30 #include "" #include typedef struct{ float gailv; int flag; int parent; int lchild; int rchild; char ch; int t; }HNodeType; typedef struct{ int bit[MAXBIT]; int start; }HCodeType; typedef struct{ float gailv; char letter; }mytype; /*it's the type of data save in file*/ typedef struct filehuff{ int count; mytype mydata[MAXLEAF]; filehuff(){count=0; }; }; filehuff filedata; char code[MAXVALUE]; HNodeType HuffNode[MAXNODE]; void savetofile() { FILE *fp;

信息论与编码

第2章离散信息的度量 本章主要内容 (1)自信息的概念 (2)平均自信息的概念(信源熵的概念) (3)互信息的概念 (4)平均互信息的概念 (5)相对熵的概念 在通信系统中,信源发出的不同消息携带不同的信息量,不同的信源输出信息的能力也不同;同一消息通过载体信号在不同的信道中传输后,接收端获得的信息量不同,不同的信道传递信息的能力也不同。为了衡量一个通信系统质量好坏,必须有一些评价标准。例如误码率、接收信噪比、传信率等。而系统的传信率就是指单位时间内信道所传递的信息量。为了评价系统的传信率,必须对消息或信源所含有的信息有一个数量上的度量方法。这就是我们要研究信息度量的目的。 本章将介绍信息度量的一些基础概念。 2.1自信息 信源发出的消息的形式可以是语言、文字、公式、数据、声音、图像等等。信源发出信息,通过信道传送信息。假如学生上课时,教师在全部时间内仅反复说一句同样的话。显然,从后面教师(信源)发出的同一句话(消息)中,学生(信宿)得不到任何信息。同样的,把“2008年在北京召开了奥运会”这样一则消息告诉大家,那么大家也不会从中获得任何信息。从这些例子我们可以看出,学生要想再课堂上获得信息,必须要从教师那里学到事先不知道的知识。也就是说,对于信宿来说,使其获得解惑的是消息中的未知部分,借助通信,信宿明确了原来不明确的一些事情,获得了一些信息。一则消息包含有多少信息量,通过理想信道传输后信宿就可以获得多少信息量(或说消除了多少不确定性)。

2.1.1 自信息的定义 绪论中我们给出了香农对于信息的定义:信息是客观事物存在方式或运动状态的不确定性的描述。一般地说,信源要发出的消息的状态应该存在着某种程度的不确定性,通过通信,将信息传给了收信者,收信者得到信息之后,消除了不确定性。这里所说的不确定性,也就是随机性,不确定性程度可以直观地看成是猜测某些随机事件是否会发生的难易程度。我们可以用概率统计方法来描述随机事件发生后提供信息的大小。即概率大的事件,出现的可能性大,不确定性小,事件发生后带给我们的信息量就少。反之,小概率事件出现的可能性小,不确定性大,事件发生后带给我们的信息量就多。 定义2.1 随机事件i x 的自信息量定义为 ()log ()=-i r i I x p x (2.1) 由定义可以看出,随机事件所含信息量的多少用消息出现概率的对数的负值来表示。 下面我们借助通信过程的研究来分析自信息量的含义。对应在通信系统中,信源发出消息(符号)i x 的概率为()i p x ,则i x 含有的自信息量即为)(i x I ,正确传输,收信者就可以获得)(i x I 这么多的信息量。而通信过程发生前,信源发出的消息存在某种不确定性,借助通信,信宿明确了原来不明确的一些事情,获得了一些信息。通信过程消除掉的不确定性越多,信宿获得信息量就越大。所以通信系统中,自信息量)(i x I 的含义可以由两方面来理解: (1) 表示信源发出符号i x 前,发出符号i x 的不确定性的大小; (2) 表示信源发出符号i x 后,符号i x 提供的信息量的多少。 由定义我们可以绘制出自信息量的函数曲线如图2.1所示。

信息论与编码课程设计..

吉林建筑大学 电气与电子信息工程学院信息理论与编码课程设计报告 设计题目:哈夫曼编码的分析与实现专业班级:电子信息工程101 学生姓名: 学号: 指导教师:吕卅王超 设计时间:2013.11.18-2013.11.29

一、设计的作用、目的 《信息论与编码》是一门理论与实践密切结合的课程,课程设计是其实践性教学环节之一,同时也是对课堂所学理论知识的巩固和补充。其主要目的是加深对理论知识的理解,掌握查阅有关资料的技能,提高实践技能,培养独立分析问题、解决问题及实际应用的能力。 通过完成具体编码算法的程序设计和调试工作,提高编程能力,深刻理解信源编码、信道编译码的基本思想和目的,掌握编码的基本原理与编码过程,增强逻辑思维能力,培养和提高自学能力以及综合运用所学理论知识去分析解决实际问题的能力,逐步熟悉开展科学实践的程序和方法 二、设计任务及要求 通过课程设计各环节的实践,应使学生达到如下要求: 1. 理解无失真信源编码的理论基础,掌握无失真信源编码的基本方法; 2. 掌握哈夫曼编码/费诺编码方法的基本步骤及优缺点; 3. 深刻理解信道编码的基本思想与目的,理解线性分组码的基本原理与编码过程; 4. 能够使用MATLAB 或其他语言进行编程,编写的函数要有通用性。 三、设计内容 一个有8个符号的信源X ,各个符号出现的概率为: 编码方法:先将信源符号按其出现的概率大小依次排列,并取概率最小的字母分别配以0和1两个码元(先0后1或者先1后0,以后赋值固定),再将这两个概率相加作为一个新字母的概率,与未分配的二进制符号的字母重新排队。并不断重复这一过程,直到最后两个符号配以0和1为止。最后从最后一级开始,向前返回得到各个信源符号所对应的码元序列,即为对应的码字。 哈夫曼编码方式得到的码并非唯一的。在对信源缩减时,两个概率最小的符号合并后的概率与其他信源符号的概率相同时,这两者在缩减中的排序将会导致不同码字,但不同的排序将会影响码字的长度,一般讲合并的概率放在上面, 12345678,,,,, ()0.40.180.10.10.070.060.050.04X x x x x x x x x P X ????=????????

信息论与编码总结

信息论与编码 1. 通信系统模型 信源—信源编码—加密—信道编码—信道—信道解码—解密—信源解码—信宿 | | | (加密密钥) 干扰源、窃听者 (解密秘钥) 信源:向通信系统提供消息的人或机器 信宿:接受消息的人或机器 信道:传递消息的通道,也是传送物理信号的设施 干扰源:整个系统中各个干扰的集中反映,表示消息在信道中传输受干扰情况 信源编码: 编码器:把信源发出的消息变换成代码组,同时压缩信源的冗余度,提高通信的有效性 (代码组 = 基带信号;无失真用于离散信源,限失真用于连续信源) 译码器:把信道译码器输出的代码组变换成信宿所需要的消息形式 基本途径:一是使各个符号尽可能互相独立,即解除相关性;二是使各个符号出现的概率尽可能相等,即概率均匀化 信道编码: 编码器:在信源编码器输出的代码组上增加监督码元,使之具有纠错或检错的能力,提高通信的可靠性 译码器:将落在纠检错范围内的错传码元检出或纠正 基本途径:增大码率或频带,即增大所需的信道容量 2. 自信息:()log ()X i i I x P x =-,或()log ()I x P x =- 表示随机事件的不确定度,或随机事件发生后给予观察者的信息量。 条件自信息://(/)log (/)X Y i j X Y i j I x y P x y =- 联合自信息:(,)log ()XY i j XY i j I x y P x y =- 3. 互信息:;(/) () (;)log log ()()()i j i j X Y i j i i j P x y P x y I x y P x P x P y == 信源的先验概率与信宿收到符号消息后计算信源各消息的后验概率的比值,表示由事件y 发生所得到的关于事件x 的信息量。 4. 信息熵:()()log ()i i i H X p x p x =-∑ 表示信源的平均不确定度,或信源输出的每个信源符号提供的平均信息量,或解除信源不确定度所需的信息量。 条件熵:,(/)()log (/)i j i j i j H X Y P x y P x y =- ∑ 联合熵:,()()log ()i j i j i j H XY P x y P x y =-∑ 5. 平均互信息:,()(;)()log ()() i j i j i j i j p x y I X Y p x y p x p y =∑

哈夫曼编码信息论课程设计

信 息 论 课 程 设 计 实 验 报 告 专业班级:信计0802 姓名:刘建勋 学号:07 目录:

1.课题描述-----------------------------------------------------------------------------------------3 2.信源编码的相关介绍---------------------------------------------------------------------3 3.哈夫曼编码-------------------------------------------------------------------------------------3 哈夫曼编码算法-----------------------------------------------------------------------3 哈弗曼编码的特点--------------------------------------------------------------------4 哈夫曼实验原理----------------------------------------------------------------------- 4 4.哈夫曼编码的C++实现-----------------------------------------------------------------5 程序设计-----------------------------------------------------------------------------------5 运行结果-----------------------------------------------------------------------------------8 总结-----------------------------------------------------------------------------------------------------8 参考文献-------------------------------------------------------------------------------------------------8

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

信息论与编码课程设计报告设计题目:判断唯一可译码、香农编码 专业班级电信12-03 学号7 学生琳 指导教师成凌飞 教师评分 2015年3月21日

目录 一、设计任务与要求 (2) 二、设计思路 (2) 三、设计流程图 (3) 四、程序运行及结果 (4) 五、心得体会 (6) 参考文献 (7) 附录:源程序 (8)

一、设计任务与要求 通过本次课程设计的练习,使学生进一步巩固信源熵、信源编码的基本原理,掌握具体的编码方法,熟悉编程软件的使用,培养学生自主设计、编程调试的开发能力,同时提高学生的实践创新能力。 1、判断唯一可译码 利用尾随后缀法判断任意输入的码是否为唯一可译码,即设计一个程序实现判断输入码组是否为唯一可译码这一功能。 2、香农编码 熟悉运用香农编码,并能通过C语言进行编程,对任意输入消息概率,利用香农编码方法进行编码,并计算信源熵和编码效率。 二、设计思路 1、判断唯一可译码 在我们学习使用了克劳夫特不等式之后,知道唯一可译码必须满足克劳夫特不等式。但是克劳夫特不等式仅仅是存在性的判定定理,即该定理不能作为判断一种码是否为唯一可译码的依据。也就是说当码字长度和码符号数满足克劳夫特不等式时,则必可以构造出唯一可译码,否则不能构造出唯一可译码。因此我们必须找到一种能够判断一种码是否为唯一可译码的方法,尾随后缀法。 尾随后缀法算法描述: 设C为码字集合,按以下步骤构造此码的尾随后缀集合F: (1) 考查C中所有的码字,若Wi是Wj的前缀,则将相应的后缀作为一个尾随后缀放入集合F0中; (2) 考查C和Fi两个集合,若Wj∈C是Wi∈Fi的前缀或Wi∈Fi 是Wj

信息论与编码题库(最新整理六套)

(一) 一、填空题 1. 在无失真的信源中,信源输出由 H (X ) 来度量;在有失真的信源中,信源输出由 R (D ) 来度量。 2. 要使通信系统做到传输信息有效、可靠和保密,必须首先 信源 编码, 然后_____加密____编码,再______信道_____编码,最后送入信道。 3. 带限AWGN 波形信道在平均功率受限条件下信道容量的基本公式,也就是有名的香农公式是log(1)C W SNR =+;当归一化信道容量C/W 趋近于零时,也即信道完全丧失了通信能力,此时E b /N 0为 -1.6 dB ,我们将它称作香农限,是一切编码方式所能达到的理论极限。 4. 保密系统的密钥量越小,密钥熵H (K )就越 小 ,其密文中含有的关于明文的信息量I (M ; C )就越 大 。 5. 已知n =7的循环码4 2 ()1g x x x x =+++,则信息位长度k 为 3 ,校验多项式 h(x)= 31x x ++ 。 6. 设输入符号表为X ={0,1},输出符号表为Y ={0,1}。输入信号的概率分布为p =(1/2,1/2),失真函数为d (0,0) = d (1,1) = 0,d (0,1) =2,d (1,0) = 1,则D min = 0 , R (D min )= 1bit/symbol ,相应的编码器转移概率矩阵[p(y/x )]=1001?? ???? ;D max = 0.5 ,R (D max )= 0 ,相应的编码器转移概率矩阵[p(y/x )]=1010?? ? ??? 。 7. 已知用户A 的RSA 公开密钥(e,n )=(3,55),5,11p q ==,则()φn = 40 ,他的秘密密钥(d,n )=(27,55) 。若用户B 向用户A 发送m =2的加密消息,则该加密后的消息为 8 。 二、判断题 1. 可以用克劳夫特不等式作为唯一可译码存在的判据。 (√ ) 2. 线性码一定包含全零码。 (√ ) 3. 算术编码是一种无失真的分组信源编码,其基本思想是将一定精度数值作为序列的 编码,是以另外一种形式实现的最佳统计匹配编码。 (×) 4. 某一信源,不管它是否输出符号,只要这些符号具有某些概率特性,就有信息量。(×) 5. 离散平稳有记忆信源符号序列的平均符号熵随着序列长度L 的增大而增大。 (×) 6. 限平均功率最大熵定理指出对于相关矩阵一定的随机矢量X ,当它是正态分布时具 有最大熵。 (√ ) 7. 循环码的码集中的任何一个码字的循环移位仍是码字。 (√ ) 8. 信道容量是信道中能够传输的最小信息量。 (×) 9. 香农信源编码方法在进行编码时不需要预先计算每个码字的长度。 (×) 10. 在已知收码R 的条件下找出可能性最大的发码i C 作为译码估计值,这种译码方 法叫做最佳译码。 (√ ) 三、计算题

信息论课程设计报告

成绩: 2016-2017学年第1学期 《信息论》课程设计 学院名称: 班级学号: 学生姓名: 教师姓名: 2016年12月 一、判定唯一可译码 1. 任务说明

输入:任意的一个码(即已知码字个数及每个具体的码字) 输出:判决结果(是/不是) 输入文件:in1.txt ,含至少2组码,每组的结尾为”$”符 输出文件:out1.txt ,对每组码的判断结果 说明:为了简化设计,可以假定码字为0,1串 2. 实现原理 判断方法:将码C 中所有码字可能的尾随后缀组成一个集合F ,当且仅当集合F 中没有 包含任一码字,则可判断此码C 为唯一可译变长码。 构成集合F :首先观察码C 中最短的码字是否是其他码字的前缀。若是,将其所有可能 的尾随后缀排列出。就是将其他码字序列中截去与其最短码字相同的前缀 部分,将余下的序列为尾随后缀。而这些尾随后缀又可能是某些码字的前 缀,或者最短码字又仍是这些尾随后缀的前缀,再将由这些尾随后缀产生 的新的尾随后缀列出。然后再观察这些新的尾随后缀是否是某些码字的前 缀,或观察有否其他码字是这些新的尾随后缀的前缀,再将产生的尾随后 缀列出,依次下去,直至没有一个尾随后缀是码字的前缀或没有新的尾随 后缀产生为止。这样,首先获得的是由最短码字能引起的所有尾随后缀。 接着,按照上述步骤将次短的码字、......所有码字可能产生的尾随后缀前部 列出。由此得到由码C 的所有可能的尾随后缀组成的集合F 。 参考算法伪代码: For all ,i j W W C ∈ do if i W 是j W 的前缀 then 将相应的后缀作为一个尾随后缀放入集合0F 中 End if End for Loop For all i W C ∈ do For all j n W F ∈ do if i W 是j W 的前缀 then 将相应的后缀作为一个尾随后缀放入集合1n F +中 Else if j W 是i W 的前缀 then 将相应的后缀作为一个尾随后缀放入集合1n F +中 End if End for End for i i F F ← If ,i i W F W C ?∈∈ then Return false Else if F 中未出现新的元素 then Return true End if //能走到这里,说明F 中有新的元素出现,需继续 End loop

(完整版)信息论与编码概念总结

第一章 1.通信系统的基本模型: 2.信息论研究内容:信源熵,信道容量,信息率失真函数,信源编码,信道编码,密码体制的安全性测度等等 第二章 1.自信息量:一个随机事件发生某一结果所带的信息量。 2.平均互信息量:两个离散随机事件集合X 和Y ,若其任意两件的互信息量为 I (Xi;Yj ),则其联合概率加权的统计平均值,称为两集合的平均互信息量,用I (X;Y )表示 3.熵功率:与一个连续信源具有相同熵的高斯信源的平均功率定义为熵功率。如果熵功率等于信源平均功率,表示信源没有剩余;熵功率和信源的平均功率相差越大,说明信源的剩余越大。所以信源平均功率和熵功率之差称为连续信源的剩余度。信源熵的相对率(信源效率):实际熵与最大熵的比值 信源冗余度: 0H H ∞=ηη ζ-=1

意义:针对最大熵而言,无用信息在其中所占的比例。 3.极限熵: 平均符号熵的N 取极限值,即原始信源不断发符号,符号间的统计关系延伸到无穷。 4. 5.离散信源和连续信源的最大熵定理。 离散无记忆信源,等概率分布时熵最大。 连续信源,峰值功率受限时,均匀分布的熵最大。 平均功率受限时,高斯分布的熵最大。 均值受限时,指数分布的熵最大 6.限平均功率的连续信源的最大熵功率: 称为平均符号熵。 定义:即无记忆有记忆N X H H X H N X H X NH X H X H X H N N N N N N )() ()()()()()(=≤∴≤≤

若一个连续信源输出信号的平均功率被限定为p ,则其输出信号幅度的概率密度分布是高斯分布时,信源有最大的熵,其值为 1log 22 ep π.对于N 维连续平稳信源来说,若其输出的N 维随机序列的协方差矩阵C 被限定,则N 维随机矢量为正态分布时信源 的熵最大,也就是N 维高斯信源的熵最大,其值为1log ||log 222N C e π+ 7.离散信源的无失真定长编码定理: 离散信源无失真编码的基本原理 原理图 说明: (1) 信源发出的消息:是多符号离散信源消息,长度为L,可以用L 次扩展信 源表示为: X L =(X 1X 2……X L ) 其中,每一位X i 都取自同一个原始信源符号集合(n 种符号): X={x 1,x 2,…x n } 则最多可以对应n L 条消息。 (2)信源编码后,编成的码序列长度为k,可以用k 次扩展信宿符号表示为: Y k =(Y 1Y 2……Y k ) 称为码字/码组 其中,每一位Y i 都取自同一个原始信宿符号集合: Y={y 1,y 2,…y m } 又叫信道基本符号集合(称为码元,且是m 进制的) 则最多可编成m k 个码序列,对应m k 条消息 定长编码:信源消息编成的码字长度k 是固定的。对应的编码定理称为定长信源编码定理。 变长编码:信源消息编成的码字长度k 是可变的。 8.离散信源的最佳变长编码定理 最佳变长编码定理:若信源有n 条消息,第i 条消息出现的概率为p i ,且 p 1>=p 2>=…>=p n ,且第i 条消息对应的码长为k i ,并有k 1<=k 2<=…<=k n

信息论与编码课程设计报告,统计信源熵与香农编码

信息论与编码课程设计报告设计题目:统计信源熵与香农编码 专业班级电信 12-06 学号 学生姓名 指导教师 教师评分 2015年 3 月 30日

目录 一、设计任务与要求 (2) 二、设计思路 (2) 三、设计流程图 (3) 四、程序运行及结果 (4) 五、心得体会 (6) 参考文献 (7) 附录:源程序 (8)

一、设计任务与要求 1.统计信源熵 要求:统计任意文本文件中各字符(不区分大小写)数量,计算字符概率,并计算信源熵。 2.香农编码 要求:任意输入消息概率,利用香农编码方法进行编码,并计算信源熵和编码效率。 二、设计思路 本次课程设计中主要运用C 语言编程以实现任务要求,分析所需要的统计量以及相关变量,依据具体公式和计算步骤编写语句,组成完整C 程序。 1、信源熵 定义:信源各个离散消息的自信息量的数学期望为信源的平均信息量,一般称为信源的信息熵,也叫信源熵或香农熵,有时称为无条件熵或熵函数,简称熵,记为H ()。 计算公式: ) (log )(-)x (i i i x p x p H ∑= 2、香农编码过程: (1)将信源消息符号按其出现的概率大小依次排列为 n p p ≥???≥≥21p (2)确定满足下列不等式的整数码长i K 为 1)()(+-<≤-i i i p lb K p lb (3)为了编成唯一可译码,计算第i 个消息的累加概率 ∑-==11) (i k k i a p P (4)将累计概率 i P 变换成二进制数。 (5)取i P 二进制数的小数点后i K 位即为该消息符号的二进制码字。

三、设计流程图 1、统计信源熵 开始 读取给定文件 判断文件是否打开否 并且不为空 是 统计文本字符,直关闭文件 至文本字符读完。 统计同一字符(不分 大小写)出现的次数 计算字符概率 计算信源熵 输出 结束

信息论课程设计(2)

电子科技大学电子工程学院信息论课程设计报告课程名称:信息编码与加密

课程设计报告 学生姓名:农瀚学号:21 指导教师:李万春 一、课程设计名称:编程实现霍夫曼、费诺、香农编码 二、课设原理: 1)霍夫曼编码:霍夫曼编码的平均码长最短,是最佳编码。编码步骤如下: (1 )将信源符号按概率大小排序; (2)对概率最小的两个符号求其概率之和,同时给两幅 号分别赋予码元0和1 ; (3)将概率之和当做一个新符号的概率。与剩下的概率 一起,形成一个缩减信源,再重复上述步骤,直到概率和为1为止;(4)按上述步骤实际上构成了一个码树,从根到端点经过的树枝即为码字。 2)费诺编码: 编码步骤如下: (1)将信源概率从大到小排序; (2)将信源符号分成两组,使两组信源符号的概率之和近似相等,并给两组信源符号分别赋0和1; (3)再把各个小组的信源符号细分为两组并赋码元,方法与第一次分组相同; (4)如此一直下去,直到每一个小组只含一个信源符号为止;(5)由此可构造成一个码树,所有终端节点上的码字组成费诺码。

3)香农编码: 编码方法如下: ⑴将信源消息符号按其出现的概率大小依次排列 p(u1) > p(u2)》p(un) ⑵确定码长Ki (整数): 1?S — Ki=[ ]——取整 ⑶ 为了编成唯一可译码,计算第i个消息的累加概率 Pi=工>(?J u ⑷ 将累加概率Pi变换成二进制数。 ⑸ 取pi二进制数的小数点后Ki位即为该消息符号的二进制数。 三、课设目的:通过编程实现三种方式的编码,掌握三种编 码方式的步骤。 四、课设内容: 三种编码方式的编程思路: 1、霍夫曼编码:(1)对给定的n个权值{W1,W2,W3,…,Wi,…,Wn} 构成n 棵二叉树的初始集合F= {T1,T2,T3,…,Ti,…,Tn},其中每棵二叉树Ti 中只有一个权值为Wi的根结点,它的左右子树均为空。(为方便在计算机上实现算法,一般还要求以Ti的权值Wi的升序排列。) (2)在F中选取两棵根结点权值最小的树作为新构造的二叉树的左右

信息论与编码课程大作业二进制哈夫曼编码

信息论与编码课程大作业 题目:二进制哈夫曼编码 学生姓名: 学号:2010020200 专业班级: 2010级电子信息班 2013年5月18日

二进制哈夫曼编码 1、二进制哈夫曼编码的原理及步骤 1、1信源编码的计算 设有N 个码元组成的离散、无记忆符号集,其中每个符号由一个二进制码字表示,信源符号个数n 、信源的概率分布P={p(s i )},i=1,…..,n 。且各符号xi 的以li 个码元编码,在变长字编码时每个符号的平均码长为∑==n i li xi p L 1)( ; 信源熵为:)(log )()(1 xi p xi p X H n i ∑=-= ; 唯一可译码的充要条件:11 ≤∑=-n i Ki m ; 其中m 为码符号个数,n 为信源符号个数,Ki 为各码字长度。 构造哈夫曼数示例如下图所示。 1、2 二元霍夫曼编码规则 (1)将信源符号依出现概率递减顺序排序。 (2)给两个概率最小的信源符号各分配一个码位“0”和“1”,将两个信源符号合并成一个新符号,并用这两个最小的概率之和作为新符号的概率,结 0.60 0.15 0.09 0.30 1.00 0.60 0.03 0.30 0.15 0.40 0.05 0.04 0.03

果得到一个只包含(n-1)个信源符号的新信源。称为信源的第一次缩减信源,用s1 表示。 (3)将缩减信源 s1 的符号仍按概率从大到小顺序排列,重复步骤(2),得到只含(n-2)个符号的缩减信源s2。 (4)重复上述步骤,直至缩减信源只剩两个符号为止,此时所剩两个符号 的概率之和必为 1,然后从最后一级缩减信源开始,依编码路径向前返回,就得到各信源符号所对应的码字。 1、3 二元哈夫曼编码流程图如下图所示。 是 是 开始 等待数据输入 判断输入的概 率是否小于零 判断概率和是 否大于1 生成一个n - 1行n 列的数组 按照哈弗曼的编码规则进行编 码 计算码长 计算编码效率 计算信源熵 显示结果 结束

信息论与编码理论习题答案

第二章 信息量和熵 2.2 八元编码系统,码长为3,第一个符号用于同步,每秒1000个码字,求它的 信息速率。 解:同步信息均相同,不含信息,因此 每个码字的信息量为 2?8log =2?3=6 bit 因此,信息速率为 6?1000=6000 bit/s 2.3 掷一对无偏骰子,告诉你得到的总的点数为:(a) 7; (b) 12。问各得到多少信 息量。 解:(1) 可能的组合为 {1,6},{2,5},{3,4},{4,3},{5,2},{6,1} )(a p =366=6 1 得到的信息量 =) (1 log a p =6log =2.585 bit (2) 可能的唯一,为 {6,6} )(b p =361 得到的信息量=) (1 log b p =36log =5.17 bit 2.4 经过充分洗牌后的一副扑克(52张),问: (a) 任何一种特定的排列所给出的信息量是多少? (b) 若从中抽取13张牌,所给出的点数都不相同时得到多少信息量? 解:(a) )(a p =! 521 信息量=) (1 log a p =!52log =225.58 bit (b) ???????花色任选 种点数任意排列 13413!13 )(b p =13 52134!13A ?=1352 13 4C 信息量=1313 52 4log log -C =13.208 bit

2.9 随机掷3颗骰子,X 表示第一颗骰子的结果,Y 表示第一和第二颗骰子的 点数之和,Z 表示3颗骰子的点数之和,试求)|(Y Z H 、)|(Y X H 、 ),|(Y X Z H 、)|,(Y Z X H 、)|(X Z H 。 解:令第一第二第三颗骰子的结果分别为321,,x x x ,1x ,2x ,3x 相互独立, 则1x X =,21x x Y +=,321x x x Z ++= )|(Y Z H =)(3x H =log 6=2.585 bit )|(X Z H =)(32x x H +=)(Y H =2?( 361log 36+362log 18+363log 12+364log 9+365log 536)+36 6 log 6 =3.2744 bit )|(Y X H =)(X H -);(Y X I =)(X H -[)(Y H -)|(X Y H ] 而)|(X Y H =)(X H ,所以)|(Y X H = 2)(X H -)(Y H =1.8955 bit 或)|(Y X H =)(XY H -)(Y H =)(X H +)|(X Y H -)(Y H 而)|(X Y H =)(X H ,所以)|(Y X H =2)(X H -)(Y H =1.8955 bit ),|(Y X Z H =)|(Y Z H =)(X H =2.585 bit )|,(Y Z X H =)|(Y X H +)|(XY Z H =1.8955+2.585=4.4805 bit 2.10 设一个系统传送10个数字,0,1,…,9。奇数在传送过程中以0.5的概 率错成另外一个奇数,其余正确接收,求收到一个数字平均得到的信息量。 解: 8,6,4,2,0=i √ );(Y X I =)(Y H -)|(X Y H 因为输入等概,由信道条件可知,

信息论课程设计报告

xx大学 信息论课程设计 姓名: 学号: 学院: 指导老师: 完成日期:2015.01.04 一、判定唯一可译码

1.任务说明: 输入:任意的一个码(即已知码字个数及每个具体的码字) 输出:判决结果(是/不是) 输入文件:in1.txt,含至少2组码,每组的结尾为”$”符 输出文件:out1.txt,对每组码的判断结果 说明:为了简化设计,可以假定码字为0,1串 2.问题分析、实现原理 判定唯一可译码根据唯一可译码的判别方法,利用数据结构所学的知识,定义字符串数据类型并利用指针进行编程来实现算法。 算法: 1、考察C 中所有的码字,若Wi是Wj的前缀,则将对应的后缀作为一个尾随后缀码放入集合Fi+1中; 2、考察C和Fi俩个集合,若Wi ∈C是Wj∈F的前缀或Wi ∈F是Wj∈C的前缀,则将相应的后缀作为尾随后缀码放入集合Fi+1中; 3、F=∪Fi即为码C的尾随后缀集合; 4、若F中出现了C中的元素,算法终止,返回假(C不是唯一可译码);否则若F中没有出现新的元素则返回真。 3.源代码: #include #include stdlib.h #include using namespace std; struct strings { char *string; struct strings *next; }; struct strings Fstr, *Fh, *FP; //输出当前集合 void outputstr(strings *str) { do { cout<string<next; }while(str); cout<b?b:a;

信息论与编码课程设计(哈夫曼编码的分析与实现)

建筑大学 电气与电子信息工程学院 信息理论与编码课程设计报告 设计题目:哈夫曼编码的分析与实现 专业班级:电子信息工程 101 学生: 学号: 指导教师:吕卅王超 设计时间: 2013.11.18-2013.11.29

一、设计的作用、目的 《信息论与编码》是一门理论与实践密切结合的课程,课程设计是其实践性教学环节之一,同时也是对课堂所学理论知识的巩固和补充。其主要目的是加深对理论知识的理解,掌握查阅有关资料的技能,提高实践技能,培养独立分析问题、解决问题及实际应用的能力。 通过完成具体编码算法的程序设计和调试工作,提高编程能力,深刻理解信源编码、信道编译码的基本思想和目的,掌握编码的基本原理与编码过程,增强逻辑思维能力,培养和提高自学能力以及综合运用所学理论知识去分析解决实际问题的能力,逐步熟悉开展科学实践的程序和方法 二、设计任务及要求 通过课程设计各环节的实践,应使学生达到如下要求: 1. 理解无失真信源编码的理论基础,掌握无失真信源编码的基本方法; 2. 掌握哈夫曼编码/费诺编码方法的基本步骤及优缺点; 3. 深刻理解信道编码的基本思想与目的,理解线性分组码的基本原理与编码过程; 4. 能够使用MATLAB 或其他语言进行编程,编写的函数要有通用性。 三、设计容 一个有8个符号的信源X ,各个符号出现的概率为: 编码方法:先将信源符号按其出现的概率大小依次排列,并取概率最小的字母分别配以0和1两个码元(先0后1或者先1后0,以后赋值固定),再将这两个概率相加作为一个新字母的概率,与未分配的二进制符号的字母重新排队。并不断重复这一过程,直到最后两个符号配以0和1为止。最后从最后一级开始,向前返回得到各个信源符号所对应的码元序列,即为对应的码字。 哈夫曼编码方式得到的码并非唯一的。在对信源缩减时,两个概率最小的符号合并后的概率与其他信源符号的概率相同时,这两者在缩减中的排序将会导12345678,,,,,()0.40.180.10.10.070.060.050.04X x x x x x x x x P X ????=????????

信息论课程设计

电子科技大学电子工程学院信息论课程设计报告 < 课程名称:信息编码与加密 ,

课程设计报告 学生姓名:农瀚学号:20 指导教师:李万春 一、课程设计名称:编程实现霍夫曼、费诺、香农编码 二、课设原理: 1)霍夫曼编码:霍夫曼编码的平均码长最短,是最佳编码。编码步骤如下: (1)将信源符号按概率大小排序; (2)对概率最小的两个符号求其概率之和,同时给两幅 号分别赋予码元0和1; (3)将概率之和当做一个新符号的概率。与剩下的概率一起,形成一个缩减信源,再重复上述步骤,直到概率和为1为止;(4)按上述步骤实际上构成了一个码树,从根到端点经过的树枝即为码字。 / 2)费诺编码: 编码步骤如下: (1)将信源概率从大到小排序; (2)将信源符号分成两组,使两组信源符号的概率之和近似相等,并给两组信源符号分别赋0和1; (3)再把各个小组的信源符号细分为两组并赋码元,方法与第一次分组相同; (4)如此一直下去,直到每一个小组只含一个信源符号为止;

(5)由此可构造成一个码树,所有终端节点上的码字组成费诺码。 3)香农编码: 编码方法如下: ⑴将信源消息符号按其出现的概率大小依次排列 @ p(u1)≥p(u2)≥…≥ p(un) ⑵确定码长Ki (整数) : Ki= []——取整 ⑶为了编成唯一可译码,计算第i个消息的累加概率 ⑷将累加概率Pi变换成二进制数。 ⑸取pi二进制数的小数点后Ki位即为该消息符号的二进制数。 三、课设目的:通过编程实现三种方式的编码,掌握三种编 码方式的步骤。 四、课设内容: 三种编码方式的编程思路: 】 1、霍夫曼编码:(1)对给定的n个权值{W1,W2,W3,...,Wi,...,Wn}构成n棵二叉树的初始集合F= {T1,T2,T3,...,Ti,...,Tn},其中每棵二叉树Ti中只有一个权值为Wi的根结点,它的左右子树均为空。(为方便在计算机上实现算法,一般还要求以Ti的权值Wi的升序排列。)(2)在F中选取两棵根结点权值最小的树作为新构造的二叉树的左

信息论与编码课程设计(精.选)

信息论与编码课程设计报告 设计题目:统计信源熵、香农编码与费诺编码 专业班级:XXXXXXXXXXXX 姓名:XXXXXXXXXXXX 学号:XXXXXXXXXXXX 指导老师:XXXXXXXXXXXX 成绩: 时间:2015年3月31日

目录 一、设计任务与要求 (2) 二、设计思路 (2) 三、设计流程图 (5) 四、程序及结果 (7) 五、心得体会 (11) 六、参考文献 (12) 附录 (13)

一、 设计任务与要求 1. 统计信源熵 要求:统计任意文本文件中各字符(不区分大小写)数量,计算字符概率,并计算信源熵。 2. 香农编码 要求:任意输入消息概率,利用香农编码方法进行编码,并计算信源熵和编码效率。 3. 费诺编码 要求:任意输入消息概率,利用费诺编码方法进行编码,并计算信源熵和编码效率。 二、 设计思路 1、统计信源熵: 统计信源熵就是对一篇英文文章中的i 种字符(包括标点符号及空格,英文字母不区分大小写)统计其出现的次数count i (),然后计算其出现的概率()p i ,最后由信源熵计算公式: 1()()log ()n i i n H x p x p x ==-∑ 算出信源熵()H x 。所以整体步骤就是先统计出文章中总的字符数,然后统计每种字符的数目,直到算出所有种类的字符的个数,进而算出每种字符的概率,再由信源熵计算公式计算出信源熵。在这里我选择用Matlab 来计算信源熵,因为Matlab 中系统自带了许多文件操作和字符串操作函数,其计算功能强大,所以计算

信源熵很是简单。 2、香农编码 信源编码模型: 信源编码就是从信源符号到码符号的一种映射f ,它把信源输出的符号i a 变换成码元序列i x 。 1,2,...,,i i N f a i q x =→: 1:{,...,}q S s a a ∈ 信源 1 2 {,...,}li i i i i X x x x = 码元 1{,...,} 1,2,...,i q S a a i N ∈= 1,2,...,N i q = 1:{,...,} r X x x x ∈ 码符号 N 次扩展信源无失真编码器 凡是能载荷一定的信息量,且码字的平均长度最短,可分离的变长码的码字集合都可以称为最佳码。为此必须将概率大的信息符号编以短的码字,概率小的符号编以长的码字,使得平均码字长度最短。能获得最佳码的编码方法主要有:香农(Shannon )、费诺(Fano )、哈夫曼(Huffman )编码等。 香农第一定理: 离散无记忆信源为 1 21 2......()()()...... q q s s s S p s p s p s P ????=???????? 熵()H S ,其N 次扩展为

信息论与编码课后答案

一个马尔可夫信源有3个符号{}1,23,u u u ,转移概率为:()11|1/2p u u =,()21|1/2p u u =, ()31|0p u u =,()12|1/3p u u =,()22|0p u u =,()32|2/3p u u =,()13|1/3p u u =,()23|2/3p u u =,()33|0p u u =,画出状态图并求出各符号稳态概率。 解:状态图如下 状态转移矩阵为: 1/21/2 01/302/31/32/30p ?? ?= ? ??? 设状态u 1,u 2,u 3稳定后的概率分别为W 1,W 2、W 3 由1231WP W W W W =??++=?得1231132231231 112331223 231W W W W W W W W W W W W ?++=???+=???=???++=? 计算可得1231025925625W W W ?=??? =?? ?=?? 由符号集{0,1}组成的二阶马尔可夫链,其转移概率为:(0|00)p =,(0|11)p =,(1|00)p =, (1|11)p =,(0|01)p =,(0|10)p =,(1|01)p =,(1|10)p =。画出状态图,并计算各状态 的稳态概率。 解:(0|00)(00|00)0.8p p == (0|01)(10|01)0.5p p == (0|11)(10|11)0.2p p == (0|10)(00|10)0.5p p == (1|00)(01|00)0.2p p == (1|01)(11|01)0.5p p == (1|11)(11|11)0.8p p == (1|10)(01|10)0.5p p ==

相关文档
最新文档