《费诺编码课程设计.doc》由会员分享,可在线阅读,更多相关《费诺编码课程设计.doc(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流费诺编码课程设计.精品文档.吉林建筑大学电气与电子信息工程学院信息理论与编码课程设计报告设计题目: 费诺编码 专业班级 学生姓名: 学 号: 指导教师: 设计时间: 2014.11.242014.12.5 教师评语:成绩 评阅教师 日期 第1章 概述1.1设计的作用、目的信息论与编码是一门理论与实践密切结合的课程,课程设计是其实践性教学环节之一,同时也是对课堂所学理论知识的巩固和补充。其主要目的是加深对理论知识的理解,掌握查阅有关资料的技能,提高实践技能,培养独立分析问题、解决问题及实际应用的能力。通过完成具体编码算法的程序设计和调试工作,提
2、高编程能力,深刻理解信源编码、信道编译码的基本思想和目的,掌握编码的基本原理与编码过程,增强逻辑思维能力,培养和提高自学能力以及综合运用所学理论知识去分析解决实际问题的能力,逐步熟悉开展科学实践的程序和方法。1.2设计任务及要求 1理解无失真信源编码的理论基础,掌握无失真信源编码的基本方法; 2根据费诺编码算法,考虑一个有多种可能符号(各种符号发生的概率不同)的信源,得到费诺编码; 3掌握费诺编码的优缺点; 4能够使用MATLAB或其他语言进行编程,编写的函数要有通用性,要理解每个函数的具体意义和适用范围,对主要函数的功能和参数做详细说明。1.3设计内容 费诺编码属于概率匹配编码,但不是最佳的
3、编码方法。在编N进制码时首先将信源消息符号按其出现的概率依次由小到大排列开来,并将排列好的信源符号按概率值分N大组,使N组的概率之和近似相同,并对各组赋予一个N进制码元0、1N-1。之后再针对每一大组内的信源符号做如上的处理,即再分为概率和相同的N组,赋予N进制码元。如此重复,直至每组只剩下一个信源符号为止。此时每个信源符号所对应的码字即为费诺码。针对同一信源,费诺码要比香农码的平均码长小,消息传输速率大,编码效率高。 一个有8个符号的信源X,各个符号出现的概率为:XP(X) X1, X2, X3, X4, X5, X6, X7, X80.19, 0.18, 0.17, 0.16, 0.13,
4、 0.10, 0.06, 0.01进行费诺编码,并计算平均码长、编码效率、冗余度。第2章 费诺编码2.1设计原理1. 编码与信源编码在学过信息论与编码以后,对这方面内容已有了基础的了解。为了进行更深入的了解,我查阅了很多资料,我认为通信的根本问题是如何将信源输出的信息在接收端的信宿精确地或近似地复制出来,而这最重要的一步就是信源的编码,一个好的开端才能为以后的传输及接受、解码提供有利得条件。而我也对各种信源编码方式产生了浓厚的兴趣。1.1首先要了解什么是信源编码为了减少信源输出符号序列中的剩余度、提高符号的平均信息量,对信源输出的符号序列所施行的变换。具体说,就是针对信源输出符号序列的统计特性
5、来寻找某种方法,把信源输出符号序列变换为最短的码字序列,使后者的各码元所载荷的平均信息量最大,同时又能保证无失真地恢复原来的符号序列8。既然信源编码的基本目的是提高码字序列中码元的平均信息量,那么,一切旨在减少剩余度而对信源输出符号序列所施行的变换或处理,都可以在这种意义下归入信源编码的范畴,例如过滤、预测、域变换和数据压缩等。一般来说,减少信源输出符号序列中的剩余度、提高符号平均信息量的基本途径有两个:使序列中的各个符号尽可能地互相独立;使序列中各个符号的出现概率尽可能地相等。前者称为解除相关性,后者称为概率均匀化。在通信过程中,如何在不失真或允许一定失真条件下,用尽可能少的符号来传送信源信
6、息,提高信息传输率;在信道受干扰的情况下,如何增加信号的抗干扰能力,同时又使得信息传输率最大。这就产生了多种信源编码方式2。为了有效传播信息,最理想状态即为无失真传输。在无失真信源编码中又分为定长编码、变长编码机最佳变长编码。1.1.1定长编码在定长编码中,K是定值,编码的目的即为找到最小的K值。要实现无失真的信源编码,不但要求信源符号与码字是一一对应的,而且还要求有码字组成的码符号序列的逆变换也是唯一的。由定长编码定理可知,当编码器容许的输出信息率,也就是当每个信源符号必须输出的码长是K=Kl/logm。由定理表明,只要码字所能携带的信息量大于信源序列输出的信息量,则可以使传输几乎无失真,但
7、是条件是L足够大。这就为传输带来了很大的麻烦,并且实现起来很困难,并且编码效率也不高。而要达到编码效率接近1的理想编码器虽有存在性,但在实际上时不可能的,因为L非常大,无法实现。由此而产生了变长编码。1.1.2变长编码在变长编码中,码长K是变化的,可根据信源各个符号的统计特性,对概率大的符号用短码,而对概率小的符号用长码。这样大量信源符号编成码后,平均每个信源符号所需的输出符号数就可以降低,从而提高编码效率。用变长编码来达到相当高的编码效率,一般所要求的符号长度L可以比定长编码小得多的多。很明显,定长码需要的信源序列长,这使得码表很大,且总存在译码差错。而变长码要求编码效率达到96%时,只需L
8、=2.因此用变长码编码时,L不需要很大就可达到相当高的编码效率,而且可实现无失真编码。并且随着信源序列长度的增加,编码效率越来越接近于1,编码后的信息传输率R也越来越接近于无噪无损二元对称信道的信道容量C=1bit/二元码符号,达到信源与信道匹配,使信道得到充分利用。但变长编码方式也有优劣的区分,下面就讨论几种不同的变长编码方式1。1、 香农编码方法香农第一定理指出了平均码长与信源之间的关系,同时也指出了可疑通过编码使平均码长达到极限值,这是一个很重要的极限定理。香农第一定理指出,选择每个码字的长度Ki满足下式:I(xi)Ki=P2=Pn。2依次排列的信源符号按概率值分为两大组,使两个组的概率
9、之和近似相同,并对各组赋予一个二进制码元“0”和“1”。3使划分后的两个组的概率之和近似相同,并对各组赋予一个二进制符号“0”和“1”。4如此重复,直至每个组只剩下一个信源符号为止。5信源符号所对应的码字即为费诺码。4. 费诺编码特点费诺编码,它编码后的费诺码要比香农码的平均码长小,消息传输速率大,编码效率高,但它属于概率匹配编码它不是最佳的编码方法1。费诺编码方法属于概率匹配编码,具有如下特点:1、概率大,则分解次数小;概率小则分解次数多。这符合最佳码原则。2、码字集合是唯一的。3、分解完了,码字出来了,码长也有了,即先有码字后有码长。因此,费诺编码方法又称为子集分解法。2.2设计步骤1.
10、费诺编码过程框图概率大小降序排列按概率值分为两组,概率和近似相同各组赋予二进制码云“0”和“1”两组概率和近似相同,各组赋予二进制码云“0”和“1”如此反复,直至每个组只剩下一个信源符号为止信源符号所对应的码字即为费诺码 图1费诺码编码过程图2. 费诺编码过程表消息符号Xi各个符号概率P(Xi)第一次分组第二次分组第三次分组第四次分组二元码字码长X10.1900002X20.18100103X30.1710113X40.1610102X50.13101103X60.101011104X70.06111115X0.01111115 表1费诺码编码过程表3. 计算平均码长、编码效率、冗余度。4.
11、冗余度在数据传输中,由于衰减或干扰会使数据代码发生突变,此时就要提高数据代码的抗干扰能力这必须在原二进制代码长度的基础上增加几位二进制代码的长度,使相应数据具有一定的冗余度,也称做富裕度简单地说,所谓冗余度,就是从安全角度考虑多余的一个量,这个量就是为了保障仪器、设备或某项工作在非正常情况下也能正常运转。目前大多现代产品和工程设计中都应用了冗余度这个思想和理论。在许多医疗单位中药品存量不足,卫生材料存量不够,一遇突发事件,就会造成缺货,造成涨价风波,影响社会安定。在我们的医院中,由于各项费用都与经济效益挂钩,医疗设备等卫生装备冗余度很不够,基本上只能按平时的正常运转设置,甚至有的都没达到。一遇
12、突发事件,这点装备就显得严重不足。冗余度,通俗的讲就是数据的重复度。在一个数据集合中重复的数据称为数据冗余 第3章 费诺编码的MATLAB实现3.1 MATLAB简介Matlab是MathWorks公司于1982年推出的一套高性能的数值计算和可视化软件。它集数值分析、矩阵运算、信号处理和图形显示于一体,构成了一个方便、界面良好的用户环境。它还包括了Toolbox(工具箱)的各类问题的求解工具,可用来求解特定学科的问题。其特点是:16,17,18 (1) 可扩展性:Matlab最重要的特点是易于扩展,它允许用户自行建立指定功能的M文件。对于一个从事特定领域的工程师来说,不仅可利用Matlab所提
13、供的函数及基本工具箱函数,还可方便地构造出专用的函数。从而大大扩展了其应用范围。当前支持Matlab的商用Toolbox(工具箱)有数百种之多。而由个人开发的Toolbox则不可计数。(2) 易学易用性:Matlab不需要用户有高深的数学知识和程序设计能力,不需要用户深刻了解算法及编程技巧。(3) 高效性:Matlab语句功能十分强大,一条语句可完成十分复杂的任务。如fft语句可完成对指定数据的快速傅里叶变换,这相当于上百条C语言语句的功能。它大大加快了工程技术人员从事软件开发的效率。据MathWorks公司声称,Matlab软件中所包含的Matlab源代码相当于70万行C代码。3.2 MAT
14、LAB广泛应用由于Matlab具有如此之多的特点,在欧美高等院校,Matlab已成为应用于线性代数、自动控制理论、数理统计、数字信号处理、时间序列分析、动态系统仿真等高级课程的基本教学工具:在研究单位、工业部门,Matlab也被广泛用于研究和解决各种工程问题。当前在全世界有超过40万工程师和科学家使用它来分析和解决问题14。Matlab作为科学计算软件,主要适用于矩阵运算和信息处理领域的分析设计,它使用方便、输入简捷,运算高效、内容丰富,并且有大量的函数库可提供使用,与Basic,C和Fortran相比,用Matlab编写程序,其问题的提出和解决只需要以数学方式表达和描述,不需要大量繁琐的编程
15、过程。利用Matlab软件并通过计算机仿真光学空间滤波实验过程的新方法,其特点是:既可以随意改变所设计滤波器的参量,又可以对输入图像进行振幅、相位或复合滤波,并且可实现傅里叶变换频谱中相位信息的提取、存储和利用,因而能够完成一般光学实验中往往难以实现的某些操作.并分别给出了网格滤波、低通、高通及相位滤波等仿真实验结果。这种仿真实验给光学滤波器的设计和图象处理带来很大方便,同时也为相关器件的设计提供了一条新的途径。3.3 MATLAB软件系统构成 图2 MATLAB7.0界面MATLAB软件主要包括主包、Simulink和工具箱三大部分组成。下图为MATLAB界面:3.4 MATLAB语言MAT
16、LAB可以认为是一种解释性语言,可以直接在MATLAB命令窗口键入命令,也可以在编辑器内编写应用程序,这样MATLAB软件对命令或程序中各条语句进行翻译,然后在MATLAB环境下对它进行处理,最后返回运算结果。MATLAB语言的基本语句结构为:变量名列表=表达式其中等号左边的变量名列表为MATLAB语句的返回值,等号右边是表达式的定义,它可以是MATLAB允许的矩阵运算,也可以使函数调用。等号右边的表达式可以由分号结束,也可以由逗号或回车结束,但他们的含义是不同的,如果用分号结束,则左边的变量结果将不在屏幕上显示出来,否则将把结果全部显示出来。MATLAB语言和C语言有所不同,在调用函数式MA
17、TLAB允许一次返回多个结果,这时等号左边是用括起来的变量列表。3.4 MATLAB编程 费诺编码也是一种常见的信源编码方法。信源符号以概率递减的次序排列进来,将排列好的信源符号划分为两大组,使第组的概率和近于相同,并各赋于一个二元码符号”0”和”1”.然后,将每一大组的信源符号再分成两组,使同一组的两个小组的概率和近于相同,并又分别赋予一个二元码符号.依次下去,直至每一个小组只剩下一个信源符号为止.这样,信源符号所对应的码符号序列则为编得的码字。 根据其原理所得到的MATLAB程序如下: clc;clear;A=0.19,0.18,0.17,0.16,0.13,0.10,0.06,0.01;
18、A=fliplr(sort(A);%降序排列m,n=size(A);for i=1:n B(i,1)=A(i);%生成B的第1列end%生成B第2列的元素a=sum(B(:,1)/2;for k=1:n-1 if abs(sum(B(1:k,1)-a)=abs(sum(B(1:k+1,1)-a) break; endendfor i=1:n%生成B第2列的元素 if i=k B(i,2)=0; else B(i,2)=1; endend%生成第一次编码的结果END=B(:,2);END=sym(END);%生成第3列及以后几列的各元素j=3;while (j=0) p=1; while(p=n
19、) x=B(p,j-1); for q=p:n if x=-1 break; else if B(q,j-1)=x y=1; continue; else y=0; break; end end end if y=1 q=q+1; end if q=p|q-p=1 B(p,j)=-1; else if q-p=2 B(p,j)=0; END(p)=char(END(p),0; B(q-1,j)=1; END(q-1)=char(END(q-1),1; else a=sum(B(p:q-1,1)/2; for k=p:q-2 if abs(sum(B(p:k,1)-a)=abs(sum(B(p:
20、k+1,1)-a); break; end end for i=p:q-1 if i=k B(i,j)=0; END(i)=char(END(i),0; else B(i,j)=1; END(i)=char(END(i),1; end end end end p=q; end C=B(:,j); D=find(C=-1); e,f=size(D); if e=n j=0; else j=j+1; endendBAENDfor i=1:n u,v=size(char(END(i); L(i)=v;endavlen=sum(L.*A)encodef=2.61/ avlen3.5运行结果及分析 图3
21、 运行结果图 第4章 总结 本学期的课程设计结束了,通过本次设计的经历我认识到了许多专业知识上的不足之处,对于老师课堂上的理论知识进一步的进行了巩固,在以后的学习中还应该继续努力。 仿真时,我学习巩固了仿真软件MATLAB,学习到了仿真软件的一些作用。和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。MATLAB的基本数据单位是矩阵,它的指令表达式与数学、
22、工程中常用的形式十分相似,故用MATLAB来解算问题要比用其他的仿真软件等语言完成相同的事情简捷得多,并且应用它也吸收了像Maple等软件的优点,使它成为一个强大的数学软件。可以说MATLAB就是我们设计的好帮手。通过这次课程设计,我们又掌握了许多新知识,学习巩固了MATLAB软件.同时也巩固了专业知识,为以后学习打下了好的基础,每次的课程设计我们都应该认真完成它。它对我们以后的学习和工作都有着很大的帮助,我们学习了以后工作可能用得到的东西,学习了新的东西。参考文献1曹雪虹,张宗橙信息论与编码清华大学出版社2009.22樊昌信,曹丽娜通信原理国防工业出版社2006.9.3严蔚敏,吴伟民数据结构清华大学出版社2007.4谭浩强C程序设计清华大学出版社2005.5徐利民,舒君,谢优忠基于MATLAB的信号与系统实验教程清华大学出版社2010.26周炯磐信息论基础人民邮电出版社1983.7周炯磐,丁晓明信源编码原理人民邮电出版社1999.8周荫清信息理论基础北京航空航天大学出版社1993.9吴伯修,祝宗泰,钱霖君信息论与编码东南大学出版社1991.10阙喜戎信息安全原理及应用清华大学出版社2003.