费诺编码的分析与实现Word文档格式.docx
《费诺编码的分析与实现Word文档格式.docx》由会员分享,可在线阅读,更多相关《费诺编码的分析与实现Word文档格式.docx(18页珍藏版)》请在冰豆网上搜索。
第1章概述
1.1设计的作用、目的
《信息论与编码》是一门理论与实践密切结合的课程,通过理论课程学习如何计算信道容量,包括对信道的认识,以及传输速率的计算,计算最佳编码,编码效率等等。
再通过课程设计加深对知识的认识,课程设计是其实践性教学环节之一,同时也是对课堂所学理论知识的巩固和补充。
其主要目的是加深对理论知识的理解,掌握查阅有关资料的技能,提高实践技能,培养独立分析问题、解决问题及实际应用的能力。
通过完成具体编码算法的程序设计和调试工作,提高对MATLAB等类似软件的认识程度,掌握MATLAB等类似软件的各种操作,提高编程能力,深刻理解信源编码、信道编译码的基本思想和目的,掌握编码的基本原理与编码过程,增强逻辑思维能力,培养和提高自学能力以及综合运用所学理论知识去分析解决实际问题的能力,逐步熟悉开展科学实践的程序和方法。
1.2设计任务及要求
1.理解无失真信源编码的理论基础,掌握无失真信源编码的基本方法;
2.掌握费诺编码方法的基本步骤及优缺点;
3.深刻理解信道编码的基本思想与目的,理解线性分组码的基本原理与编码
过程;
4.能够使用MATLAB或其他语言进行编程,编写的函数要有通用性。
1.3设计内容
一个有8个符号的信源X,各个符号出现的概率分别为:
运用MATLAB软件,编写适当的程序,对以上8个信源符号进行费诺编码,
得出二进制码字,计算平均码长、编码效率、冗余度,并总结费诺编码方法
的特点和应用。
第2章费诺编码的分析与实现
2.1设计原理
1.编码原理
早期的数据压缩来自于人们对概率的了解。
当对文字信息进行编码时,如果出现概率较高的字幕赋予较短的编码,为出现概率较低的字母赋予较长的编码,平均编码长度就能缩短不少。
著名的Morse电码就是一个范例。
信息论之父C.E.Shannon曾指出,任何信息都存在冗余,冗余大小与信息中每个符号出现概率(不确定性)有关。
他所提出的无失真信源编码定理奠定了数据压缩的理论基础。
数据压缩的目的就是要消除冗余,信息论是运用概率论与数理统计的方法研究信息、信源熵、通信系统、数据传输、密码学、数据压缩等问题的应用数学学科。
从DVD到个人电脑,从卫星通信到文件,在我们今天的生活中,信息几乎在每个领域都扮演者重要角色。
工程师克劳德·
香农于1948年奠定了信息论的基础,他指出了通信的极限。
基于这一理论产生了数据压缩技术、纠错技术等各个应用技术,这些技术提高了数据传输和存储的效率。
信息论将信息的传递作为一种统计现象来考虑,给出了估算通信信道容量的方法。
信息传输和信息压缩是信息论研究中的两大领域。
这两个方面又由信息传输定理、信源—信道隔离定理相互联系。
当然,信息论的重大应用远不止于此。
DNA是一种信息存储物质,正事信息论帮助人们解开了生物基因组密码之谜。
简单地说信息论包含了生命、宇宙乃至一切。
信息论对现代社会的影响是多方面的。
首先,在理论研究方面,信息论所处的地位已远远超出了香农当年所界定的“通信的数学理论”的范畴,得到了不断的扩充和发展,出现了语义信息、语法信息与语用信息等研究与信息的意义有关的学科,以及面向智能研究的全信息理论。
如今,信息已成为与物质、能量并列的宇宙中的三个基本要素,世间万物的发展变化可归结为物质、能量和信息的传递和转化过程。
另一方面,在科学和技术高度发展的今天,信息的概念也被渗透到许多不同的学科和领域,深入到了社会生活的各个方面,成为可与相对论和量子力学并驾齐驱的新一代边缘交叉学科的重要组成部分。
特别是以信息论、控制论、和系统论为代表的“老三论”以及以普利高津的耗散结构理论,哈肯的协同学和托姆的突变论或艾根的超循环理论为代表的“新三论”的出现,标志着一代新的边缘交叉学科的兴起。
它们的形成和发展对现代科学的研究具有重要的方法论上的指导意义。
编码是信息从一种形式或格式转换为另一种形式的过程也称为计算机编程语言的代码简称编码。
用预先规定的方法将文字、数字或其它对象编成数码,或将信息、数据转换成规定的电脉冲信号。
编码在电子计算机、电视、遥控和通讯等方面广泛使用。
在计算机硬件中,编码(coding)是指用代码来表示各组数据资料,使其成为可利用计算机进行处理和分析的信息。
代码是用来表示事物的记号,它可以用数字、字母、特殊的符号或它们之间的组合来表示,将数据转换为代码或编码字符,并能译为原数据形式。
是计算机书写指令的过程,程序设计中的一部分。
在地图自动制图中,按一定规则用数字与字母表示地图内容的过程,通过编码,使计算机能识别地图的各地理要素。
编码分为信源编码和信道编码,其中信源编码又分为无失真和限失真。
由于这些定力都要求符号数很大,以便其值接近所规定的值,因而这些定力被称为极限定理。
一般称无失真信源编码定力为第一极限定理;
信道编码(包括离散和连续信道)称为第二极限定理;
限失真信源编码定力称为第三极限定理。
2.信源编码原理
由于信源符号之间存在分布不均匀和相关性,是的信源存在冗余度,信源编码的主要任务就是减少冗余,提高编码效率。
具体说,就是针对仙缘输出符号序列的统计特性,寻找一定的方法把信源输出符号序列变换为最短码字序列的方法。
信源编码的基本途径有两个:
使序列中的各个符号尽可能的相互独立,及解除相关性;
使编码中各个符号出现的概率尽可能地相等,即概率均匀化。
信源编码的基础是信息论中的两个编码定理:
无失真编码定理和限失真编码定理,前者是可逆编码的基础。
可逆是指当信源符号转换成代码后,可从代码无失真的恢复原信源符号。
当已知信源符号的概率特性时,可计算它的符号熵,这边是每个信源符号所载有的信息量。
编码定理不但证明了必定存在一种编码方法,可使代码的平均长度可任意接近但不低于符号熵,而且还阐明达到这木匾的途径,就是使概率与码长匹配。
无失真编码或可逆编码只适用与离散信源。
对于连续信源,编成代码后就无法无失真地恢复原来的连续值,因为后者的取值可有无限多个。
此时只能根据率失真编码定理在失真受限制的情况下进行限失真编码。
信源编码定理出现后,编码定理趋于合理化。
关于离散信源编码,从无失真编码定理出发。
若要所编的码是惟一可译码,不但要求编码时不同的信源符号变换成不同的码字,而且必须要求任意有限长的信源序列所对应的码符号序列各不相同,即要求码的任意有限长N次扩展码都是非奇异码。
因为只有任意有限长的信源序列所对应的码符号序列各不相同,才能把该码符号序列惟一地分割成一个个对应的信源符号,从而实现惟一的译码。
3.费诺编码原理
费诺编码就是通过使编码中各个句号出现的概率大致相等,实现概率均匀化,从而减少冗余度,提高编码效率。
凡是能载荷一定的信息量,且码字的平均长度最短,可分离的变长码的码字集合称为最佳变长码。
在编N进制码时首先将信源消息符号按其出现的额概率一次又小到大排列开来,并将排列好的心愿符号按概率值分N大组,使N组的概率之和近似相同,并对各组赋予一个N进制码元0、1...N-1。
之后再针对每一个大组内的心愿符号做如上处理,即再分为概率相同的N组,赋予N进制码元。
如此重复,直到每组只剩下一个心愿符号为止。
此时每个信源符号所对应的码字即为费诺码。
针对同一个心愿,费诺码比香农码平均码长小,消息出书速率大,编码效率高。
费诺编码是一种信源编码,它编码后的费诺码要比香农码的平均码长小,消息传输速率大,编码效率高。
但它属于概率匹配编码它不是最佳的编码方法。
4.费诺编码特点
费诺编码是一种信源编码,它编码后的费诺码要比香农码的平均码长小,消息传输速率大,编码效率高。
费诺编码属于概率匹配编码,具有如下特点:
(1)概率大,则分解次数少;
概率小则分解次数多,这符合最佳编码原则。
(2)码字集合是唯一的。
(3)分解之后先得码字后得码长。
2.2设计步骤
1.费诺码编码步骤
(1)将信源消息符号按其出现的概率大小依次排列:
p1≥p2≥…≥pn。
(2)将依次排列的信源符号按概率值分为两大组,使两个组的概率之和近似
相同,并对各组赋予一个二进制码元“0”和“1”。
(3)将每一大组的信源符号再分成两组,使划分后的两个组的概率之和近似
相同,并对各组赋予一个二进制符号“0”和“1”。
(4)如此重复,直至每个组只剩下一个信源符号为止。
(5)信源符号所对应的码子即为费诺码。
2.费诺码编码过程如表1所示。
表1费诺码编码过程
消息符号
各个消息概率p(xi)
第一次
分组
第二次
第三次
第四次
第五次
二元码字
码长
x1
0.25
00
2
x2
0.2
1
01
x3
100
3
x4
0.1
101
x5
110
x6
0.08
1110
4
x7
0.05
11110
5
x8
0.02
11111
3.计算平均码长、信源熵、编码效率及冗余度。
平均码长:
2.77码元/符号
信源熵:
2.71bit/符号
编码效率:
0.98
冗余度:
1-0.980.02
第3章费诺编码的MATLAB实现
3.1MATLAB
MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
MATLAB是matrix&
laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。
是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。
它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。
MATLAB和Mathematica、Maple并称为三大数学软件。
它在数学类科技应用软件中在数值计算方面首屈一指。
MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。
在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。
MATLAB是一个高级的矩阵/阵列语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程特点。
用户可以在命令窗口中将输入语句与执行命令同步,也可以先编写好一个较大的复杂的应用程序(M文件)后再一起运行。
新版本的MATLAB语言是基于最为流行的C++语言基础上的,因此语法特征与C++语言极为相似,而且更加简单,更加符合科技人员对数学表达式的书写格式。
使