信息论与编码课程报告

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

Turbo码编码与译码方法

一、前言:

Turbo码自1993年被提出以来,就以其优异的纠错性能而备受关注,并被主要通信标准所采纳。Turbo码是用短码构造等效意义的长码,以达到长码

的纠错性能而减少解码复杂度。在强噪声低洗澡比的条件下,如E b/N0=0.7dB,

采用编码效率R=1/2的Turbo码,经过18次迭代解码后,仍然具有极低的误

码率。Turbo码得这一特性对于强噪声环境下数字通信与数字信号传输具有重

要的应用价值。Turbo码的发现,标志着信道编码理论与技术的研究进入了一

个崭新的阶段,对现代编码理论的发展起着重要的作用。

二、Turbo码的编码原理:

Turbo码编码器由两个递归系统卷积吗编码器(RSC1和RSC2)通过一个交织器并行级联而成,编码后经过删除或复用,产生不同码率的码字,进入传输

信道。Turbo码编码器结构框图如图1所示,信息序列d={d1,d2,…d N}经过N

位交织器,形成一个新序列

d‘={d1’,d2’,…,d N’}(长度与内容没变,但比特位置经过重新排列)。d和d‘分

别传送到两个分量码编码器(RSC1和RSC2)。一般情况下,这两个分量码编

码器结构相同,生成序列X1p和X2p。为了提高误码率,序列X1p和X2p需要经过

删除器,采用删除技术从这两个校验序列中周期地删除一些校验位,形成校验

位序列X P与编码序列u(为方便表述,也用X S表示)经过复用,生成Turbo

码序列。例如,假如图中两个分量编码器的码率均是1/2,为了得到1/2码率

的Turbo码,可以采用这样的删除矩阵:P=[10,01],即删除来自RSC1的校验

序列X1p的偶数位置比特,与来自RSC2的校验序列X2p的奇数位置比特。

S

X

图1

交织器在Turbo码中起关键作用。表面上看,它仅仅是将信息序列中的N个比特的位置进行随机置换,实际上,它很大程度上影响了Turbo码的性能。通过随机交织,使得编码序列在长为2N和3N(不使用删除)比特的范围内具有记忆性,从而有简单的短码得到近似长码。当交织器充分大时,Turbo码就具有近似于随机长码的特性。

三、Turbo码的译码原理:

Turbo码译码器采用反馈结构,以迭代方式译码。与Turbo编码器的两个分量码相对应,译码端应该有两个分量译码器它的结构如图2.1所示。

(

对于图2 Turbo码编码器,接收到得数据流中包含三部分内容:信息码,编码器1产生的校验码(经删余)和编码器2产生的校验码(经删余)。

Turbo译码器在译码前首先要进行数据的分离——与发送端复合器逆向功能的分接处理,将数据流还原成,和3路信息。发送端子编码器1,2的校验码由于删余并未全部传送过来,、只是、的部分信息,分接后的校

验序列的部分比特位将没有数据,这样就必须根据删余的规律对接收的校验序列进行内插,在被删除的数据位上补以中间量(如0),以保证序列的完整性。

四、Turbo的译码算法:

Turbo 码有两类译码算法: 第一类就是MAP 算法以及基于MAP 算法的修正算法LOG-MAP算法。另一类就是软输出的维特比算法, 也就是SOVA算法。下边对两种译码算法进行介绍:

1、 LOG-MAP译码算法:

LOG-MAP是改进的MAP(最大后验概率)算法,它在对数域进行计算,可以将MAP算法中大量的乘法运算化简为加法运算,从而降低计算量。除此之外,它的基本原理与经典MAP算法相同。

MAP算法由Bahl等人于1974年提出,因此又称为BCJR算法。与Viterbi 算法不同,它估计出最大似然比特,而前者产生最大似然序列。也就是说Viterbi 算法提供整体最优解,而MAP算法则提供个体最优解。

前面已经提到,卷积码编码过程实际就是一个有限状态机的状态转移过程。设t 时刻编码器从状态S t-1转移到状态S t ,对应的输入为u t =k ,k ∈{0,1},输出校验位为x t , 它与u t 一起传输到接收端,译码器的任务就是根据接收信号y t 来尽可能恢复u t 。图3.23示意了这一过程。由于u t 与状态转移是对应的,因此,有

====

=-)

|,,'()|(111N

t t t N

t y k u m S m S p y k u p (1)

式中N y 1表示接收序列[y 1….y N ]。因此,只要得到所有的

)

|,'(11N

t t y m S m S p ==- (2)

就可以通过对其中那些对应于k u t =的状态转移概率求和来得到信息比特的后验概率。由贝叶斯定理,

)

()

,,'()|,'(1111

1N

N

t t N

t t y p y m S m S p y m S m S p ===

==-- (3)

上式右侧分子项联合概率可作进一步化简:

),,'|(),,'(),,'(1111111t

t t N

t t

t t N

t t y m S m S y p y m s m S p y m S m S p =======-+--

)

|(),,'(111m S y p y m S m S p t N

t t t t ====+-

)|(),'|,(),'(11

111

11m S y p y m S y m S p y m S p t N

t t t t t t t =====+----

)

|()'|,(),'(111

11m S y p m S y m S p y m S p t N

t t t t t t =====+---

(4)

以上的化简过程中应用了马尔可夫信源的性质,即t 时刻以后的状态只与S t 及以后的输入有关,而与t 时刻之前的状态和输入无关,也就是说得到了t 时刻的状态,之后的状态转移就不再依赖于t y 1以及t-1时刻的状态。(4)式分为三部分,可以分别定义如下,令:

),()(1t

t t y m S p m ==α

图3.23 编码网格中一次状态转移

)|()(1m S y p m t N

t t ==+β

)'|,(),'(1m S y m S p m m t t t t ===-γ

则联合概率可写为:

)

(),'()'(),,'(111m m m m y m S m S p t t t N

t t βγα??===-- (5)

其中,)(m t α和)(m t β可以用递归方法求出:

===

-'

11),,'()(m t

t t t y m S m S p m α

----===='1

11111)

,'|,(),'(m t t t t t t y m S y m S p y m S p

∑?=

-'

1

)

,'()'(m t t m m m γα

(6)

===

++'

'11)

|,''()(m t N

t t t m S y m S p m β

+++++=====''11211)

,'',|()|,''(m t t t N

t t t t y m S m S y p m S y m S p ∑++?=

'

'11

)''()'',(m t t m m m βγ

(7)

通常,编码器的初始状态已知,对于编码器1,帧结束时网络终止,因此其终了状态了也是已知的,因此有

()???==

其它

010i i m m a

以及

()??

?==其它

01i i N m m β

对于编码器2,由于网格不终止,可以认为它的终了状态是平均分布的。另外,有

),'|()'|(),'(11m S m S y p m S m S p m m t t t t t t =====--γ

))

,'(|()),'((m m x y p m m u p t t t = (8)

式中),'(m m u t 为信息符号,),'(m m x t 为对应于状态转移),'(m m 的编码输出符号。上式中)(t u p 为信息符号的先验概率,而条件概率)|(t t x y p 可由如前所述的信道模型得到。

2、 SOVA 译码算法:

SOVA 算法就是软输出维特比算法,是在 1989年提出的一种改进的维特比算

法, 它的特点就是找到一条可能性序列的同时,还能产生这条路径上码元的可靠性的信息,也就是我们需要的软信息, 从而使得每一个码元序列的差错概率达到最小。相比于MAP类算法,计算更加的简单,计算量大幅度的减少。

下面分析 SOVA 算法。状态数是, v 是编码寄存器的个数, 而每一节点

有两条分支, 以为延时进行一个比特的判决,在k时刻对于状态sk ,维特比选择一条幸存路径, 这是通过计算路径最小距离而得到的。同时,状态 sk 还对应着一条待选路径。对于幸存路径我们将其度量标为 M1, 相应的对于待选路径的度量我们标为 M2,于是幸存路径选错的概率为

(1)

其中,表示的是传输不可信度,于是在 m 个路径1(幸存路径) 和路径2(待选路径)的信息比特不等的位置处, 其错误概率为

, 我们可以用式子( 23) 表示

(2)

其中表示的是已存储路径 1 的错误概率, j = j 1,

。则对数似然比可写为

(3)

其中。结合式子( 1)、 ( 2)、 ( 3) , 我们

可以得到

(4)

a 是为了防止信噪比的增加而产生溢出。 a =, d 是码间的自由距离。上式可以近似的写为(5)

a 是为了防止信噪比的增加而产生溢出。

a = d 是码间的自由距离。上式可以近似的写为

五、Turbo的画出编译码程序流程图:

六、仿真与分析:

采用log-map算法和sova算法对turbo码的性能进行了仿真,其结果如下图所示。从仿真过程看, log-map算法比sova算法用时较长,但其误码率较低,这说明log-map算法比sova算法性能更好,而sova算法延时小,更容易实现。

Turbo码的log map和sova译码

矩阵为g=[111,101],帧长为400比特,最大迭代次数为5,rate为0.5的仿真图像。

在相同的帧长、生成矩阵和编码速率下,不论对哪种译码算法来说,迭代次数越大,性能越好,误比特率及误帧率越低。而在一个迭代次数下,两个算法的误码率和误帧率都随信噪比的增加而降低。

相同迭代次数下,Log-MAP算法性能优于SOVA算法,但是Log-MAP算法比SOVA算法复杂,计算时间更长。在低SNR环境下,Log-MAP算法比SOVA算法的性能有一定好转,但是LOG-MAP算法在每一时刻都要考虑所有路径,并且其运算是乘法和指数运算,比较复杂。SOVA算法中的运算是简单的加法运算、比较和选择。所以在低信噪比下,SOVA的总体性能与复杂度都比LOG-MAP算法好。

参考文献:

1、《Turbo与LDPC编解码及其应用》肖扬著人民电邮出版社

2、《Turbo码原理与技术》刘华东著电子工业出版社

3、《现代编码理论与应用》张忠培史治平王传丹编著国防工业出版社

4、《MATLAB教程》张志涌杨祖樱著北京航空航天大学出版社

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

目录 一:实验原理----------------------------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;

信息论与编码实验指导书

《信息论与编码》实验指导书 信息与通信工程学院信息工程系 2014年6月

目录 实验一绘制信源熵函数曲线 (3) 实验二哈夫曼编解码 (6) 实验三离散信道容量 (10)

1实验一绘制信源熵函数曲线 一、实验目的 1.掌握离散信源熵的原理和计算方法。 2.熟悉matlab软件的基本操作,练习应用matlab软件进行信源熵函数曲 线的绘制。 3.理解信源熵的物理意义,并能从信源熵函数曲线图上进行解释其物理意 义。 二、实验原理 1.离散信源相关的基本概念、原理和计算公式 产生离散信息的信源称为离散信源。离散信源只能产生有限种符号。 假定X是一个离散随机变量,即它的取值范围R={x1,x2,x3,…}是有限或可数的。设第i个变量x i发生的概率为p i=P{X=x i}。则: 定义一个随机事件的自信息量I(x i)为其对应的随机变量x i出现概率对数的负值。即: I(x i)= -log2p(x i) 定义随机事件X的平均不确定度H(X)为离散随机变量x i出现概率的数学期望,即: ∑∑ - = = i i i i i i x p x p x I x p X H) ( log ) ( ) ( ) ( ) ( 2 单位为比特/符号或比特/符号序列。 平均不确定度H(X)的定义公式与热力学中熵的表示形式相同,所以又把平均不确定度H(X)称为信源X的信源熵。 必须注意一下几点: a)某一信源,不管它是否输出符号,只有这些符号具有某些概率特性, 必有信源的熵值;这熵值是在总体平均上才有意义,因而是个确定 值,一般写成H(X),X是指随机变量的整体(包括概率分布)。 b)信息量则只有当信源输出符号而被接收者收到后,才有意义,这就 是给与信息者的信息度量,这值本身也可以是随机量,也可以与接

信息论与编码课程总结

信息论与编码 《信息论与编码》这门课程给我带了很深刻的感受。信息论是人类在通信工程实践之中总结发展而来的,它主要由通信技术、概率论、随机过程、数理统计等相结合而形成。它主要研究如何提高信息系统的可靠性、有效性、保密性和认证性,以使信息系统最优化。学习这门课程之后,我学到了很多知识,总结之后,主要有以下几个方面: 首先是基本概念。信息是指各个事物运动的状态及状态变化的方式。消息是指包括信息的语言、文字和图像等。信号是消息的物理体现,为了在信道上传输消息,就必须把消息加载到具有某种物理特性的信号上去。信号是信息的载荷子或载体。信息的基本概念在于它的不确定性,任何已确定的事物都不含有信息。信息的特征:(1)接收者在收到信息之前,对其内容是未知的。(2)信息是能使认识主体对某一事物的未知性或不确定性减少的有用知识。(3)信息可以产生,也可以消失,同时信息可以被携带、存储及处理。(4)信息是可以量度的,信息量有多少的差别。编码问题可分解为3类:信源编码、信道编 码、加密编码。= 理论上传输的最少信息量 编码效率实际需要的信息量。 接下来,学习信源,重点研究信源的统计特性和数学模型,以及各类离散信源的信息测度 —熵及其性质,从而引入信息理论的一些基本概念和重要结论。本章内容是香农信息论的基础。重点要掌握离散信源的自信息,信息熵(平均自信息量),条件熵,联合熵的的概念和求法及其它们之间的关系,离散无记忆的扩展信源的信息熵。另外要记住信源的数学模型。通过学习信源与信息熵的基本概念,了解了什么是无记忆信源。信源发出的序列的统计性质与时间的推移无关,是平稳的随机序列。当信源的记忆长度为m+1时,该时刻发出的符号与前m 个符号有关联性,而与更前面的符号无关,这种有记忆信源叫做m 阶马尔可夫信源。若上述条件概率与时间起点无关,则信源输出的符号序列可看成齐次马尔可夫链,这样的信源叫做齐次马尔可夫信源。之后学习了信息熵有关的计算,定义具有概率为 () i p x 的符号i x 的自信息量为:()log ()i i I x p x =-。自信息量具有下列特性:(1) ()1,()0i i p x I x ==(2)()0,()i i p x I x ==∞(3)非负性(4)单调递减性(5)可加 性。信源熵是在平均意义上来表征信源的总体特征,它是信源X 的 函数,一般写成H (X )。信源熵:()()log ()i i i H X p x p x =-∑,条件熵:(|)(,)log (|) i j i j ij H X Y p x y p x y =-∑联合 熵(|)(,)log (,)i j i j ij H X Y p x y p x y =-∑,联合熵 H(X,Y)与熵H(X)及条件熵H(Y|X)的关系: (,)()(|)()(|)H X Y H X H Y X H X H X Y =+=+。互信息: ,(|)(|)(;)(,)log ()(|)log () () j i j i i j i j i ij i j j j p y x p y x I X Y p x y p x p y x p y p y = = ∑ ∑ 。熵的性质:非负性,对称性,确定 性,极值性。 接下来接触到信道,知道了信道的分类,根据用户数可以分为,单用户和多用户;根

信息论与编码实验报告.

本科生实验报告 实验课程信息论与编码 学院名称信息科学与技术学院 专业名称通信工程 学生姓名 学生学号 指导教师谢振东 实验地点6C601 实验成绩 二〇一五年十一月二〇一五年十一月

实验一:香农(Shannon )编码 一、实验目的 掌握通过计算机实现香农编码的方法。 二、实验要求 对于给定的信源的概率分布,按照香农编码的方法进行计算机实现。 三、实验基本原理 给定某个信源符号的概率分布,通过以下的步骤进行香农编码 1、将信源消息符号按其出现的概率大小排列 )()()(21n x p x p x p ≥≥≥ 2、确定满足下列不等式的整数码长K i ; 1)(l o g )(l o g 22+-<≤-i i i x p K x p 3、为了编成唯一可译码,计算第i 个消息的累加概率 ∑ -== 1 1 )(i k k i x p p 4、将累加概率P i 变换成二进制数。 5、取P i 二进制数的小数点后K i 位即为该消息符号的二进制码。 四、源程序: #include #include #include #include #include using namespace std; int main() { int N; cout<<"请输入信源符号个数:";cin>>N; cout<<"请输入各符号的概率:"<

int i,j; for(i=0;i

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

吉林建筑大学 电气与电子信息工程学院信息理论与编码课程设计报告 设计题目:哈夫曼编码的分析与实现专业班级:电子信息工程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 ????=????????

《信息论与编码》教学大纲

《信息论与编码》教学大纲 一课程简介 课程编号:04254002 课程名称:信息论与编码Informatics & Coding 课程类型:基础课必修课 学时:32 学分:2 开课学期:第六学期 开课对象:通信、电子专业 先修课程:概率论与数理统计、信号与系统、随机信号原理。 参考教材:信息论与编码,陈运,周亮,陈新,电子工业出版社,2002年8月 二课程性质、目的与任务 信息论在理论上指出了建立最佳编码、最佳调制和最佳接收方法的最佳系统的理论原则,它对通信体制和通信系统的研究具有指导意义。提高信息传输的可靠性和有效性始终是通信工作所追求的目标。因此,信息论与编码是从事通信、电子系统工程的有关工程技术人员都必须掌握的基本理论知识。 内容提要:本课程包括狭义相对论和提高通信可靠性的差错控制编码理论。信息论所研究的主要问题是在通信系统设计中如何实现有效性和可靠性。 三教学基本内容与基本要求 本课程总学时为32。其中理论教学为28,实验学时为4。 主要的理论教学内容包括:离散信源和连续信源的熵、条件熵、联合熵和平均互信息量的概念及性质;峰值功率受限和平均功率受限下的最大熵定理和连续信源熵的变换;变长码的霍夫曼编码方法,熟悉编码效率和平均码长的计算;最大后验概率准则和最大似然译码准则等。 实验内容主要包括:离散无记忆信道容量的迭代算法,循环码的编译码。 四教学内容与学时分配 第3章离散信源无失真编码

第6章网络信息论 (教学要求:A—熟练掌握;B—掌握;C—了解) 五实习、实验项目及学时分配 1.离散无记忆信道容量的迭代算法2学时 要求用Matlab编写计算离散信道容量的实用程序并调试成功,加深对信道容量的理解。 2.循环码的编译码2学时 要求用Matlab编写程序,用软件完成循环码的编译码算法。 六教学方法与手段 常规教学与多媒体教学相结合。

信息论与编码教学大纲

《信息论与编码》课程教学大纲、课程基本信息 二、课程内容及基本要求 第一章绪论 课程内容:

1 ?信息论之父--香农;信息论与香农信息论的形成与发展;香农信息论的中心 问题及其局限性; 2.信息、消息、信号、信息的本质、信息的广义性; 3.通信系统基本模型:信源、信宿、信道、干扰、噪声、信源编码、信道编码。基本要求:1.了解信息论之父---Shannon(香农)和香农信息论的基本思想及其局限性;了解信息论的形成与发展过程;了解香农信息论的基本思想(中心问题)及其适用范围;2.理解消息、信息与信号的含义;理解消息、信息与信号之间的联系与区别;3.熟悉通信系统的基本模型及各模块的主要功能。 本章重点香农信息论的中心问题、通信系统模型 本章难点:信息、消息与信号的联系与区别;香农信息论的局限性第二章信源、信息量和信息熵 课程内容: 1.无记忆信源与有记忆信源、离散信源与连续信源、离散序列信源、马尔可夫信源、离散无记忆信源、离散无记忆序列信源; 2.非平均信息量、信源熵、条件信息量、条件熵、噪声熵、损耗熵、联合熵、非平均互信息、平均互信息; 3.熵的性质、离散无记忆信源的序列熵、离散有记忆信源的序列熵;4.数据处理中信息的变化、连续信源熵;5.凸函数、互信息量的凸性,冗余度。 基本要求: 1.了解并掌握信源的分类与特点; 2.理解并掌握非平均信息量、信源熵、互信息量、条件熵、联合熵、非平均互信息量、平均互信息的概念,计算;理解并掌握信源熵、信宿熵、噪声熵、损耗熵、平均

互信息之间的关系; 3.理解马尔可夫信源的概念、理解离散序列信源熵的概念; 4.理解熵的性质、熵的唯一性原理;理解连续信源的熵及连续熵的性质; 5.理解凸函数的含义和性质;了解凸函数在信息论中的应用。 本章重点:非平均自信息量、条件信息量、互信息量、条件互信息量、熵、条件熵、熵的性质 本章难点:平均互信息量、熵、离散序列信源熵、马尔可夫信源、条件熵、噪声熵、损耗熵第三章信源编码 课程内容: 1.编码的定义与分类;奇异码与非奇码;唯一可译码与非唯一可译码;即时码与非即时码;克拉夫特不等式;码树;平均码长的计算;信息传输速率;2.无失真信源编码;定长码与定长编码定理;变长码与变长编码定理;最佳变长码编码定理;香农编码及其过程;费诺编码及其过程;哈夫曼编码及其过程;3.限失真信源编码;常用信源编码--- 游程编码、算术编码、预测编码、变换编码。 基本要求: 1.理解并掌握编码的分类及特点;掌握平均码长的计算;掌握码树的使用; 2.理解无失真信源编码的含义;掌握定长码的特点与编码原理;掌握不定长编 码的特点与编码原理; 3.掌握离散无记忆信源的等长编码及不等长编码;掌握香农编码原理、掌握费 诺编码原理;掌握哈夫曼编码原理; 4.了解常用限失真信源编码方法—算术编码、游程编码、预测编码及变换编码的编码原理。

信息论与编码实验报告材料

实验报告 课程名称:信息论与编码姓名: 系:专 业:年 级:学 号:指导教 师:职 称:

年月日 目录 实验一信源熵值的计算 (1) 实验二Huffman 信源编码. (5) 实验三Shannon 编码 (9) 实验四信道容量的迭代算法 (12) 实验五率失真函数 (15) 实验六差错控制方法 (20) 实验七汉明编码 (22)

实验一信源熵值的计算 、实验目的 1 进一步熟悉信源熵值的计算 2 熟悉Matlab 编程 、实验原理 熵(平均自信息)的计算公式 q q 1 H(x) p i log2 p i log2 p i i 1 p i i 1 MATLAB实现:HX sum( x.* log2( x));或者h h x(i)* log 2 (x(i )) 流程:第一步:打开一个名为“ nan311”的TXT文档,读入一篇英文文章存入一个数组temp,为了程序准确性将所读内容转存到另一个数组S,计算该数组中每个字母与空格的出现次数( 遇到小写字母都将其转化为大写字母进行计数) ,每出现一次该字符的计数器+1;第二步:计算信源总大小计算出每个字母和空格出现的概率;最后,通过统计数据和信息熵公式计算出所求信源熵值(本程序中单位为奈特nat )。 程序流程图: 三、实验内容 1、写出计算自信息量的Matlab 程序 2、已知:信源符号为英文字母(不区分大小写)和空格输入:一篇英文的信源文档。输出:给出该信源文档的中各个字母与空格的概率分布,以及该信源的熵。 四、实验环境 Microsoft Windows 7

五、编码程序 #include"stdio.h" #include #include #define N 1000 int main(void) { char s[N]; int i,n=0; float num[27]={0}; double result=0,p[27]={0}; FILE *f; char *temp=new char[485]; f=fopen("nan311.txt","r"); while (!feof(f)) { fread(temp,1, 486, f);} fclose(f); s[0]=*temp; for(i=0;i='a'&&s[i]<='z') num[s[i]-97]++; else if(s[i]>='A'&&s[i]<='Z') num[s[i]-65]++; } printf(" 文档中各个字母出现的频率:\n"); for(i=0;i<26;i++) { p[i]=num[i]/strlen(s); printf("%3c:%f\t",i+65,p[i]); n++; if(n==3) { printf("\n"); n=0; } } p[26]=num[26]/strlen(s); printf(" 空格:%f\t",p[26]);

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

信息论与编码课程设计报告设计题目:判断唯一可译码、香农编码 专业班级电信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

信息论与编码课程论文

《信息论与编码》课程论文 ——通过信息论对已有知识产生的新认识 马赛 1143031014 《信息论与编码》课程是通信专业的一门基础课。其讲述的理论——香农信息论是当今信息科学的基础,可以说没有信息论的理论支持,就没有当今的信息化社会。 通过对于信息论的学习,我认识到,信息论的贡献就是解释了什么是“信息”,同时使用数学工具,对信息及伴随它产生的各种事物概念进行了解析。近代科学的重大飞跃往往都是因人类对于一个事物有了强有力的分析工具而产生的。有了信息论这一近乎完备(存在一些缺陷)的解析理论,人类才得以驾驭信息,社会才有了长足的进步。 在学习时,我习惯于把正在学习的知识和自己已经掌握的知识进行联系。通过这种方法,可以增进对正在学习知识的理解,同时对已掌握的知识也有新的认识。下文中,列举了两个问题,同时使用信息论的角度去进行解释。 一、计算机的存储容量与信息量的联系 当今的计算机已经十分普及。存储容量,无论内存还是外存,都是判定一台计算机性能的重要指标。现在的个人计算机硬盘容量已经达到了TB级别,而在20年前,几百MB的硬盘都十分罕见。在追求更高的存储容量时,我们是否思考过存储的东西是什么?KB、MB、GB等单位究竟代表的含义是什么? 这是计算机科学的基本知识:“8 bit = 1 byte”。bit即“位”,这是计算机存储单元最基本的单位;而信息论中也将信息量——用于衡量信息的量的单位称为bit,这两个概念有什么联系吗? 在课程讲解时提到过这个问题,幻灯片上的答案如是解释:两者代表着不同的概念,信息论中的bit代表着信息量;而计算机中的bit代表着计算机中的二元数字1和0。 我认为两者是同一种概念,都代表信息量,而计算机中的bit是更为细化的概念,单指计算机中的信息量。信息的一种解释是:对于不确定性的消除。信息量是对信息的一种衡量手段,描述对事件不确定性消除的程度。而描述事件不确定性的量就是这个事件发生的概率,因此一个事件发生的概率与事件包含的信息量具有对应的关系。这是香农信息论对于信息量的定义。 计算机存储的依然是信息,只是信息的存储形式是01二进制数字。如果说计算机中的bit只是二元数字的话,那么这个单位就丧失了“信息”这个定义了。 用户通过互联网下载各种资料,下载的资料需要占用本地的存储空间,这是一个众所周知的例子。其实这个过程就是一个消除不确定性的过程。我们一般常识中的“空”硬盘,实际上是没有存储信息,而空间就在那里,空间中的信息有不确定,有不确定度;写入信息,实际上就是在消除不确定性,让空间中的信息确定,让其有序。这就是一种典型的信息传递过程。 计算机是2元存储结构,一个二进制符号代表1bit,根据实际计算,一个二进制符号的最大信息量即H0(X) = log22 = 1bit,这是一个将符号等同于无记忆的,每个符号之间没有联系,达到了信息量的最大值。这是最为简化的处理结果,也是最为可行的处理结果。如果严格按照信息论的角度去分析,其实每个符号之间是有联系的——各种编码、指令,如果01只是随机出现,那么只是一盘散沙。当然这是严格的理论解释,如果实际应用到存储信息的计量,那么将是不可行,计算机界的先驱是非常有远见的。 二、关于称硬币问题的思考

《信息论与信源编码》实验报告

《信息论与信源编码》实验报告 1、实验目的 (1) 理解信源编码的基本原理; (2) 熟练掌握Huffman编码的方法; (3) 理解无失真信源编码和限失真编码方法在实际图像信源编码应用中的差异。 2、实验设备与软件 (1) PC计算机系统 (2) VC++6.0语言编程环境 (3) 基于VC++6.0的图像处理实验基本程序框架imageprocessing_S (4) 常用图像浏览编辑软件Acdsee和数据压缩软件winrar。 (5) 实验所需要的bmp格式图像(灰度图象若干幅) 3、实验内容与步骤 (1) 针对“图像1.bmp”、“图像2.bmp”和“图像3.bmp”进行灰度频率统计(即计算图像灰度直方图),在此基础上添加函数代码构造Huffman码表,针对图像数据进行Huffman编码,观察和分析不同图像信源的编码效率和压缩比。 (2) 利用图像处理软件Acdsee将“图像1.bmp”、“图像2.bmp”和“图像 3.bmp”转换为质量因子为10、50、90的JPG格式图像(共生成9幅JPG图像),比较图像格式转换前后数据量的差异,比较不同品质因素对图像质量的影响; (3) 数据压缩软件winrar将“图像1.bmp”、“图像2.bmp”和“图像3.bmp”分别生成压缩包文件,观察和分析压缩前后数据量的差异; (4) 针对任意一幅图像,比较原始BMP图像数据量、Huffman编码后的数据量(不含码表)、品质因素分别为10、50、90时的JPG文件数据量和rar压缩包的数据量,分析不同编码方案下图像数据量变化的原因。 4、实验结果及分析 (1)在VC环境下,添加代码构造Huffman编码表,对比试验结果如下: a.图像1.bmp:

香农编码实验报告

中南大学 《信息论与编码》实验报告 题目信源编码实验 指导教师 学院 专业班级 姓名 学号 日期

目录 一、香农编码 (3) 实验目的 (3) 实验要求 (3) 编码算法 (3) 调试过程 (3) 参考代码 (4) 调试验证 (7) 实验总结 (7) 二、哈夫曼编码 (8) 实验目的 (8) 实验原理 (8) 数据记录 (9) 实验心得 (10)

一、香农编码 1、实验目的 (1)进一步熟悉Shannon 编码算法; (2)掌握C 语言程序设计和调试过程中数值的进制转换、数值与字符串之间 的转换等技术。 2、实验要求 (1)输入:信源符号个数q 、信源的概率分布p ; (2)输出:每个信源符号对应的Shannon 编码的码字。 3、Shannon 编码算法 1:procedure SHANNON(q,{Pi }) 2: 降序排列{Pi } 3: for i=1 q do 4: F(i s ) 5:i l 2 []log 1/()i p s 6:将累加概率F(i s )(十进制小数)变换成二进制小数。 7:取小数点后i l 个二进制数字作为第i 个消息的码字。 8:end for 9:end procedure ------------------------------------------------------------------------------------------------------------------ 4、调试过程 1、fatal error C1083: Cannot open include file: 'unistd.h': No such file or directory fatal error C1083: Cannot open include file: 'values.h': No such file or directory 原因:unistd.h 和values.h 是Unix 操作系统下所使用的头文件 纠错:删去即可 2、error C2144: syntax error : missing ')' before type 'int' error C2064: term does not evaluate to a function 原因:l_i(int *)calloc(n,sizeof(int)); l_i 后缺少赋值符号使之不能通过编译 纠错:添加上赋值符号 1 1 ()i k k p s -=∑

信息论与编码实验报告

实验一 绘制二进熵函数曲线(2个学时) 一、实验目的: 1. 掌握Excel 的数据填充、公式运算和图表制作 2. 掌握Matlab 绘图函数 3. 掌握、理解熵函数表达式及其性质 二、实验要求: 1. 提前预习实验,认真阅读实验原理以及相应的参考书。 2. 在实验报告中给出二进制熵函数曲线图 三、实验原理: 1. Excel 的图表功能 2. 信源熵的概念及性质 ()()[] ()[]())(1)(1 .log )( .) ( 1log 1log ) (log )()(10 , 110)(21Q H P H Q P H b n X H a p H p p p p x p x p X H p p p x x X P X i i i λλλλ-+≥-+≤=--+-=-=≤≤? ?????-===??????∑ 单位为 比特/符号 或 比特/符号序列。 当某一符号xi 的概率p(xi)为零时,p(xi)log p(xi) 在熵公式中无意义,为此规定这时的 p(xi)log p(xi) 也为零。当信源X 中只含有一个符号x 时,必有p(x)=1,此时信源熵H (X )为零。 四、实验内容: 用Excel 和Matlab 软件制作二进熵函数曲线。根据曲线说明信源熵的物理意义。 (一) Excel 具体步骤如下: 1、启动Excel 应用程序。 2、准备一组数据p 。在Excel 的一个工作表的A 列(或其它列)输入一组p ,取步长为0.01,从0至100产生101个p (利用Excel 填充功能)。

3、取定对数底c,在B列计算H(x) ,注意对p=0与p=1两处,在B列对应位置直接输入0。Excel中提供了三种对数函数LN(x),LOG10(x)和LOG(x,c),其中LN(x)是求自然对数,LOG10(x)是求以10为底的对数,LOG(x,c)表示求对数。选用c=2,则应用函数LOG(x,2)。 在单元格B2中输入公式:=-A2*LOG(A2,2)-(1-A2)*LOG(1-A2,2) 双击B2的填充柄,即可完成H(p)的计算。 4、使用Excel的图表向导,图表类型选“XY散点图”,子图表类型选“无数据点平滑散点图”,数据区域用计算出的H(p)数据所在列范围,即$B$1:$B$101。在“系列”中输入X值(即p值)范围,即$A$1:$A$101。在X轴输入标题概率,在Y轴输入标题信源熵。 (二)用matlab软件绘制二源信源熵函数曲线 p = 0.0001:0.0001:0.9999; h = -p.*log2(p)-(1-p).*log2(1-p); plot(p,h) 五、实验结果

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

信息论与编码课程设计报告设计题目:统计信源熵与香农编码 专业班级电信 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、统计信源熵 开始 读取给定文件 判断文件是否打开否 并且不为空 是 统计文本字符,直关闭文件 至文本字符读完。 统计同一字符(不分 大小写)出现的次数 计算字符概率 计算信源熵 输出 结束

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

信息论与编码课程大作业 题目:二进制哈夫曼编码 学生姓名: 学号: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 列的数组 按照哈弗曼的编码规则进行编 码 计算码长 计算编码效率 计算信源熵 显示结果 结束

信息论与编码实验报告

信息论与编码实验报告-标准化文件发布号:(9456-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII

实验一关于硬币称重问题的探讨 一、问题描述: 假设有N 个硬币,这N 个硬币中或许存在一个特殊的硬币,这个硬币或轻 或重,而且在外观上和其他的硬币没什么区别。现在有一个标准天平,但是无刻度。现在要找出这个硬币,并且知道它到底是比真的硬币重还是轻,或者所有硬币都是真的。请问: 1)至少要称多少次才能达到目的; 2)如果N=12,是否能在3 次之内将特殊的硬币找到;如果可以,要怎么称? 二、问题分析: 对于这个命题,有几处需要注意的地方: 1)特殊的硬币可能存在,但也可能不存在,即使存在,其或轻或重未知; 2)在目的上,不光要找到这只硬币,还要确定它是重还是轻; 3)天平没有刻度,不能记录每次的读数,只能判断是左边重还是右边重,亦或者是两边平衡; 4)最多只能称3 次。 三、解决方案: 1.关于可行性的分析 在这里,我们把称量的过程看成一种信息的获取过程。对于N 个硬币,他们 可能的情况为2N+1 种,即重(N 种),轻(N 种)或者无假币(1 种)。由于 这2N+1 种情况是等概率的,这个事件的不确定度为: Y=Log(2N+1) 对于称量的过程,其实也是信息的获取过程,一是不确定度逐步消除的过程。 每一次称量只有3 种情况:左边重,右边重,平衡。这3 种情况也是等概率 的,所以他所提供的信息量为: y=Log3 在K 次测量中,要将事件的不确定度完全消除,所以 K= Log(2N+1)/ Log3 根据上式,当N=12 时,K= 2.92< 3 所以13 只硬币是可以在3 次称量中达到

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

建筑大学 电气与电子信息工程学院 信息理论与编码课程设计报告 设计题目:哈夫曼编码的分析与实现 专业班级:电子信息工程 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 ????=????????

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

信息论与编码课程设计报告 设计题目:统计信源熵、香农编码与费诺编码 专业班级: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 次扩展为

相关文档
最新文档