资源预览内容
第1页 / 共16页
第2页 / 共16页
第3页 / 共16页
第4页 / 共16页
第5页 / 共16页
第6页 / 共16页
第7页 / 共16页
第8页 / 共16页
第9页 / 共16页
第10页 / 共16页
亲,该文档总共16页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
.青岛农业大学信息与编码理论实验报告姓名:韩祖良班级:信计1201学号:20125991指导老师:辛永训2015年6月.15信息与编码理论实验课:实验一实验题目Shannon码的编码实验目的掌握MATLAB基本操作;Shannon码的编码实验地点及时间信息楼214机房,周一上午1-2节;周三上午3-4节实验内容1.MATLAB简介及常用功能;2离散信源的MATLAB分析;3离散信道的MATLAB分析;4Shannon码的编码原理及软件实现。实验习题1 你对MATLAB软件的了解;答:我参加过数学建模国赛和美赛,获得过省级二等奖和美赛成功参与奖,更期待今年10月份的国赛可以有所突破。我对MATLAB比较熟悉,在建模过程中经常用的是其强大的计算和编程绘图功能。其操作简单,不像c语言等需要抽象的编程语言,使用的大多直接是数学中的符号,而且快捷键很方便,比如输入“clc”命令就可以清屏、输入“plot(x,y)命令”就可以绘制二维图像。编程制图方面,可以直接打开代码本,不用将代码敲入主界面,建模过程中印象比较深刻的是去年国赛A题嫦娥二号着陆点的月球剖面图就可以用MATLAB绘制,其在代码中是一个1000*1000的矩阵,而矩阵数字的突变代表了月球剖面图的高低。同样,B题设计折叠椅的动图模型也是用MATLAB做出来的。下面较为详细的介绍一下MATLAB,MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,代表了当今国际科学计算软件的先进水平。MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连matlab开发工作界面接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。2. 通过具体实例说明离散信源的MATLAB分析:自信息、信息熵等;答:注:本例题是本人从网上选择的例题,然后将原题修改而成,程序是参考网上相关问题自己编写。自信息的计算公式:I=p237Matlab实现:I=log2(1/p)或I=-log2(p)熵(平均自信息)的计算公式p237Matlab实现:HX=sum(-x.*log2(x);或者h=h-x(i)*log2(x(i);例题:甲地天气预报构成的信源空间为:X晴云大雨小雨乙地信源空间为:Y晴小雨求此两个信源的熵。求各种天气的自信息量。解:运行程序:p1=1/3,1/4,1/6,1/4;%p1代表甲信源对应的概率p2=5/8,3/8;%p2代表乙信源对应的概率H1=0.0;H2=0.0;I=;J=;fori=1:4H1=H1+p1(i)*log2(1/p1(i);I(i)=log2(1/p1(i);enddisp(自信息量分别为:);Idisp(H1信源熵为:);H1forj=1:2H2=H2+p2(j)*log2(1/p2(j);J(j)=log2(1/p2(j);enddisp(自信息量分别为:);Jdisp(H2信源熵为:);H2运行结果:自信息量分别为:I=1.58502.00002.58502.0000H1信源熵为:H1=1.9591自信息量分别为:J=0.67811.4150H2信源熵为:H2=0.95443通过具体实例说明离散信道的MATLAB分析:信道容量、最佳输入概率分布等;注:本例题摘自课本p238页。答:例题:求下图所示的信道容量及其最佳的输入概率分布。解:本题的MATLAB程序如下:clearall;%清除所有变量a=0;p=1/31/31/61/6;1/61/61/31/3;%信道矩阵Pfori=1:4,a=a+p(1,i)*log2(p(1,i);endC=log2(4)+a%计算对称离散信道的信道容量Cfori=1:2,p1(i)=1/2;endp1%最佳输入概率分布程序运行结果:C=0.0817p1=0.50000.50004Shannon码的编码步骤;答:二元香农码的编码步骤如下:将q个信源符号按概率递减的方式进行排列:(2)按式(i=1,q)计算出每个信源符号的码长。(1) 为了编成唯一可译码,计算第i个信源符号的累加概率:将累加概率用二进制数表示。(2) 取对应二进制数的小数点后位构成该信源符号的二进制码子。5Shannon码的编码(可用MATLAB软件或者其他软件或者编程语言,要求输入r个信源符号和其对应的概率分布p,输出每个信源符号对应的码字)。答:问题重述:用MATLAB软件进行编程,求输入r个信源符号和其对应的概率分布p,输出每个信源符号对应的码字。编程方法:据课本上的介绍编码香农码的方法。(1)给定信源符号概率,要先判断信源符号概率是否满足概率分布,即各概率之和是否为1,如果不为1就没有继续进行编码的必要,虽然仍可以正常编码,但编码失去了意义。(2)对信源符号概率进行从小到大的排序,以便进行下一步。从第一步就知道信源符号的个数r,于是构造一个rx4的零矩阵D,以便储存接下来运算的结果。把排好序的信源符号概率以列的形式赋给D的第一列。(3)做编码的第二步,求信源符号概率的累加概率(方法见程序),用来编写码字。(4)求各信源符号概率对应的自信息量,用于求解码长k。(5)我们对刚求的自信息量对无穷方向取最小正整数,得到的最小正整数就是该信源符号所对应编码的码长k,有了码长,接下来就可以求解码字。(6)对所求到的累加概率求其二进制,取其小数点后的数,所取位数由该信源符号对应的码长决定,所用的步骤结束,依次得到各信源符号的香农编码。编码程序:%求解给定信源符号概率的香农编码n=input(输入信源符号个数r=)p=zeros(1,r);fori=1:rp(1,i)=input(输入信源符号概率:);endifsum(p)1error(输入概率不符合概率分布)endy=fliplr(sort(p);%从大到小的排序D=zeros(n,4);%生成7*4的零矩阵D(:,1)=y;%把y赋给零矩阵的第一列fori=2:rD(1,2)=0;%令第一行第二列的元素为0D(i,2)=D(i-1,1)+D(i-1,2);%第二列其余的元素用此式求得,即为累加概率endfori=1:rD(i,3)=-log2(D(i,1);%求第三列的元素D(i,4)=ceil(D(i,3);%求第四列的元素,对D(i,3)向无穷方向取最小正整数endDA=D(:,2);%取出D中第二列元素B=D(:,4);%取出D中第四列元素forj=1:rC=deczbin(A(j),B(j)%生成码字endfunctionC=deczbin(A,B)%对累加概率求二进制的函数C=zeros(1,B);%生成零矩阵用于存储生成的二进制数,对二进制的每一位进行操作temp=A;%temp赋初值fori=1:B%累加概率转化为二进制,循环求二进制的每一位,A控制生成二进制的位数temp=temp*2;iftemp1temp=temp-1;C(1,i)=1;elseC(1,i)=0;endend实验过程及结果分析:此程序是本人根据课本香农编码叙述以及查阅网络资料编写,过程简洁,能够看到每个过程的结果,经过多次循环和函数调用可直接求解码字。实验总结:第一题我简单的写了些对MATLAB的了解;第二题、第三题和第四题相对简单书上都有;重要的是第五题,对于任意r个信源符号和其对应的概率分布p,要求输出每个信源符号对应的码字,该题在运行前先确定要求解的信源符号个数,输入概率时循环控制输入的次数,接下来判断概率是否符合要求。香农编码是码符号概率大的用短码表示,概率小的是用长码表示,程序中对概率排序,最后求得的码字就依次与排序后的符号概率对应。此程序缺点是,第一个码字都是以0开始,因为对累加概率求二进制后,小数点后的数都是0,取几位由码长确定,而香农编码是不唯一的,如果手动编码就不存在这样的问题。后面求得的编码没有下标就需要注意上面排序后的信源符号是否对应。实验成绩评阅时间评阅教师信息与编码理论实验课:实验二实验题目霍夫曼码(HuffmanCode)的编码实验目的掌握霍夫曼码的编码方法,并能利用软件实现实验地点及时间信息楼218机房,周五6-7节;信息楼214机房,周一1-2节实验内容1Huffman码的编码原理。2Huffman码编码的软件实现实验习题1Huffman码的编码原理;2Huffman码与Shannon码的异同;3Huffman码编码的软件实现(可利用实验一的例子进行Huffman码的编码)。解答如下:1 霍夫曼码的编码原理:霍夫曼编码是可变字长编码的一种。该方法完全根据字符出现的概率来构造平均长度最小的码字,称为最佳编码。二元霍夫曼编码的步骤如下:(1) 将信源按概率大小由大到小排列。(2)从概率中选择概率最小的两个信源符号开始编码,并按一定的规则赋予码符号。(2) 将已经编码的两个信源符号概率合并,重新编队,编码。(3) 重复步骤(3),直至合并的概率等于1为止。(4)从概率等于1的那一端沿合并路线逆行至对应消息进行编码。2(老师我连费诺码一起说了吧)香农码、霍夫曼码以及费诺码都考虑了信源的统计特性,使经常出现的信源符号对应较短的码字,使信源的平均码长缩短,从而实现了对信源的压缩;香农码有系统的、唯一的编码方法,但在很多情况下编码效率不是很高;费诺码和霍夫曼码的编码方法都不唯一;费诺码比较适合于对分组概率相等或接近的信源编码;霍夫曼码对信源的统计特性没有特殊要求,编码效率比较高,对编码设备的要求也比较简单,因此综合性能优于香农码,应用广泛;三种编码方法均需已知概率分布,主要用于无记忆信源。3实验一第2题原题为:甲地天气预报构成的信源空间为:X晴云大雨小雨乙地信源空间为:Y晴小雨求此两个信源的熵。求各种天气的自信息量。下面对其稍作修改,为方便编码,增加一个天气,并将甲地的五种天气分别用符号表示,为方便计算将甲地五五种天气概率分别改为0.4、0.2、0.2、0.1、0.1,则该题变为如下形式:0.40.20.20.10.1对该离散无记忆进行霍夫曼编码。按编码步骤进行编码:(1) 将信源符号按概率大小由大至小排列。(2) 从概率最小的
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号