信息论实验报告_第1页
信息论实验报告_第2页
信息论实验报告_第3页
信息论实验报告_第4页
信息论实验报告_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 物理与电子电气工程学院淮阴师范学院(信息论与编码实验报告)姓名:董宝坤学号:171313199 专业:电子信息工程班级:1305指导老师:宋毅实验一、 绘制二进制熵函数曲线一、实验目的1掌握二进制符号熵的计算;2掌握MATLAB的应用;3掌握Matlab绘图函数;4掌握、理解熵函数表达式及其性质二、实验条件计算机一台,MATLAB仿真软件。三、实验内容(1)MATLAB的应用(请参阅相关书籍)(2)打开MATLAB,在命令窗口中输入eidt,弹出编辑窗口,如图1:图1 MATLAB的编辑窗口 (3)输入源程序:clear;x=0.001:0.001:0.999y=-x.*log2(x)-(1

2、-x).*log2(1-x);plot(x,y);grid on(4)保存文件为entropy.m;(5)单击Debug菜单下的Run,或直接按F5执行;(6)执行后的结果图2:四、实验结果及分析x=0.001:0.001:0.999y=-x.*log2(x)-(1-x).*log2(1-x);plot(x,y);title('ìغ¯ÊýH(p)');Xlabel('p');ylabel('H(p)');grid on分析:.意义:信源熵为信源的平均不确定度性,而概率的大小决定了信息量

3、的大小。由图上可知概率为1时,信息量最小,不确定性最低;概率等于时熵最大。.可以看出,即p=1或者p=0,则该信源不提供任何信息;反之当二元信源符号0和1以等概率发生的时候,信源熵达到极大值,等于1bit信息量。.步长为0.001x=0.001:0.01:0.999y=-x.*log2(x)-(1-x).*log2(1-x);plot(x,y);title('ìغ¯ÊýH(p)');Xlabel('p');ylabel('H(p)');grid on分析: (1)熵函数是一个严格上凸函

4、数 (2)熵的极大值,二进符号的熵在p(x1)=p(x2)=0.5取得极大值 (3)调调整p(x1)的取值步长,重画该曲线。当步长改变为0.01,步长变大的时候,可以看出是一段一段的连接的,当步长较大的时候,非常明显。如果开始点是0的时候,则从步长的长度开始计算。实验二、一般信道容量计算一、实验目的1熟悉工作环境及Matlab软件2理解平均互信息量表达式及其性质3理解信道容量的含义二、实验条件计算机一台,MATLAB仿真软件。三、实验原理1.平均互信息量(I(X;Y)是统计平均意义下的先验不确定性与后验不确定性之差,是互信息量的统计平均:2.离散信道的数学模型离散信道的数学模型一般如图1所示。

5、图中输入和输出信号用随机矢量表示,输入信号为X= (X1, X2, XN),输出信号为Y= (Y1, Y2, YN);每个随机变量Xi和Yi又分别取值于符号集A=a1, a2, , ar和B=b1, b2, , bs,其中r不一定等于s;条件概率P(y|x) 描述了输入信号和输出信号之间的统计依赖关系,反映了信道的统计特性。YX信道 图1离散信道模型二元对称信道这是很重要的一种特殊信道(简记为BSC),。它的输入符号X取值于0,1,输出符号Y取值于0,1,r=s=2, a1=b1=0,a2=b2=1,传递概率为, , 其中,表示信道输入符号为0而接收到的符号为1的概率,表示信道输入符号为1而接

6、受到的符号为0的概率,它们都是单个符号传输发生错误的概率,通常用p表示。而和是无错误传输的概率,通常用表示。X 1-p Y 二元对称信道用矩阵来表示,即得二元对称信道的传递矩阵为依此类推,一般离散单符号信道的传递概率可用以下形式的矩阵来表示,即b1 b2 bs并满足式 ()。为了表述简便,记,信道的传递矩阵表示为而且满足 平均互信息平均互信息表示接收到输出符号后平均每个符号获得的关于输入变量X的信息量,也表示输入与输出两个随机变量之间的统计约束程度。 其中X是输入随机变量,Y是输出随机变量。平均互信息是互信息(即接收到输出符号y后输入符号x获得的信息量)的统计平均值,所以永远不会取负值。最差情

7、况是平均互信息为零,也就是在信道输出端接收到输出符号Y后不获得任何关于输入符号X的信息量。对于每一个确定信道,都有一个信源分布,使得信息传输率达到最大值,我们把这个最大值称为该信道的信道容量。相应的输入概率分布称为最佳输入分布。四、实验内容1绘制平均互信息量图形对于二元对称信道的输入概率空间为平均互信息:根据:所以: 请绘制当从0到1之间变化时的平均互信息熵曲线2. 信道容量图形一个信道是一个二进制输入,二进制输出的信道,输入和输出字母表,且该信道特性由发送1码和0码的两个错误转移概率和来表征。绘出当时的平均互信息和间的函数关系。确定每种情况下的信道容量。五、实验结果及分析 clear;w=0

8、.5;p=0.001:0.001:0.999;y=-(w.*(1-p)+(1-w).*p).*log(w.*(1-p)+(1-w).*p)-(w.*p+(1-w).*(1-p).*log(w.*p+(1-w).*(1-p)+p.*log(p)+(1-p).*log(1-p);plot(p,y);title('二进制信道的信道容量');Xlabel('p');ylabel('I(W;Y)');grid on当BSC信道,C=1-H(w),当w=0时,错误概率为0,无差错,信道容量达到最大,每符号1bit,输入端的信息全部传输至输出端;当w=1/2时

9、,错误概率与正确概率相同,从输出端得不到关于输入端的任何信息,互信息为0,在信道接收端平均每个符号才获得最小的信息量,即信道容量为0; clear;p=0.1;w=0.001:0.001:0.999;y=-(w.*(1-p)+(1-w).*p).*log(w.*(1-p)+(1-w).*p)-(w.*p+(1-w).*(1-p).*log(w.*p+(1-w).*(1-p)+p.*log(p)+(1-p).*log(1-p);plot(w,y);title('二进制信道的信道容量');Xlabel('w');ylabel('I(W;Y)');gr

10、id onclear;w,p=meshgrid(0.00001:0.001:1);y=-(w.*(1-p)+(1-w).*p).*log(w.*(1-p)+(1-w).*p)-(w.*p+(1-w).*(1-p).*log(w.*p+(1-w).*(1-p)+p.*log(p)+(1-p).*log(1-p);meshz(w,p,y);title('二进制信道的信道容量');Xlabel('w');ylabel('p');zlabel('I(W;Y)');grid on当固定信道时,只有当输入变量是等概率分布,即p(x=0)=p(

11、x=1)=在信道接收端平均每个符号才获得最大的信息量,即等于1.w=0.9998p=0:0.1:1IXY=-(w.*(1-p)+(1-w).*p).*log2(w.*(1-p)+(1-w).*p)-(w.*p+(1-w).*(1-p).*log2(w.*p+(1-w).*(1-p)+(p.*log2(p)+(1-p).*log2(1-p)stem(p,IXY);grid ontitle('ÐŵÀÈÝÁ¿')xlable('p')ylable('?')在这个三维图上面

12、可以看出是前面二个图形的综合。是w,p与I(X;Y)之间的关系,当p一定时,是w与I(X;Y)之间的关系,即I(w;y)是关于输入信源的概率分布的上凸函数。当w一定时,是p与与I(X;Y)之间的关系,是关于信道传递概率p的下凸函数。你能从实验图形中了解它的一些什么性质?实验总结:当w固定时,即信源固定后,I(p;y)是关于信道传递概率p的下凸函数。信道输出端获得关于信源的信息量是信道传递概率的下凸函数。也就是说,对于每一种信源都存在一种最差的信道,此信道的干扰最大,即输出端所获得的信息量最小。当p固定时,即固定某信道时,选择不同的信源与信道连接,在信道输出端收到每个符号后所获得的信息量是不同的

13、。而且对于每一个固定信道,一定存在一种信源,使输出端获得的信息量最大。I(w;y)是关于输入信源的概率分布的上凸函数,即对于每一个确定信道,都有一个信源分布,使得信息传输率达到最大值,我们把这个最大值称为该信道的信道容量。相应的输入概率分布称为最佳输入分布。实验三、绘制离散信源信息率失真函数曲线实验一、实验目的:1.了解率失真函数性质、意义。2.掌握简单的率失真函数计算方法;3.掌握使用Matlab实现一般率失真函数的计算方法;二、实验条件计算机一台,MATLAB仿真软件。三、实验原理二元对称信源的R(D)函数设二元信源U=0,1,其分布概率 而接收变量v=0,1,设汉明失真矩阵为:因而最小失

14、真度 。并能找到满足该最小失真的试验信道,且是一个无噪无损信道,其信道矩阵为:要达到最大允许失真,唯一确定 此时,可计算得信息传输率一般情况下,当 时可以计算得:二元对称信源信息率失真函数为四、实验内容1.从理论上计算r=s=2。p(u=1)=p,p (u=2)=1-p;d=0,1;1,0的率失真函数R(D)。2.对一般性的DMS信源,计算率失真函数R(D)的理论公式进行推导。3.找出比较合适的方程求解方法。4.使用编制Matlab编制程序求解一般的率失真函数R(D)。5.给定r=s=2。p(u=1)=0.4,p=(u=2)=0.6;d=0,1;1,0,测试程序,即比较程序运行结果与理论计算结

15、果,6.改变参数,画出函数图。五、思考题你能从实验图形中了解它的一些什么性质?六、注意事项1.提前预习实验,认真阅读实验原理。2.认真高效的完成实验,实验过程中服从实验室管理人员以及实验指导老师的管理。3.实验报告要求有:l 问题的提出:包括R(D)的物理意义、用途(可以举出具体的用途)、计算的困难性等。l 解决问题的原理方法:包括所有的公式推导的细节。l 解决问题的具体方法:包括程序框图及Matlab源程序。l 实验结果:利用你的程序给出不同参数得到的实验结果。l 结果分析:包括R(D)的性质、程序收敛情况、程序改进的方向等。4.每个同学必须独立完成实验(不能抄袭,否则两人均为零分),实验成

16、绩是该门课程成绩的主要依据。p1=0.4;d1=0:0.001:0.4y1=-p1.*log2(p1)-(1-p1).*log2(1-p1)+d1.*log2(d1)+(1-d1).*log2(1-d1);p2=0.3;d2=0:0.001:0.3grid ony2=-p2.*log2(p2)-(1-p2).*log2(1-p2)+d2.*log2(d2)+(1-d2).*log2(1-d2);plot(d1,y1,'k-');hold;plot(d2,y2);grid ontitle('ÀëÉ¢ÐÅÔ

17、;´ÐÅÏ¢ÂÊʧÕ溯Êý')xlabel('D');ylabel('R(D)');R(D)在定义域内是失真度D的U型下凸函数。R(D)在定义域内是关于D的连续函数。R(D)的单调递减性,容许的失真度越大,所要求的信息率越小。当D相同时,信源越趋于等概率分布,R(D)就越大。由最大离散熵定理,信源越趋于等概率分布,即不确定性越大,要去除这不确定性所需的信息传输率就越大,而R(D)正是去除信源不确定性所

18、必须的信息传输率。实验总结:物理意义:对于给定的信源,在满足保真度准则下,必须传送的最小信息量,它既反映了用户容忍程度,也反映了信息率允许压缩的最小值,R(D)越大,越难压缩,反之可压缩率就大;对于固定的信源分布,平均互信息量I(X;Y)是信道转移概率 p(bj/ai) 的下凸函数。也就是说:存在一个信道使某一特定信源经过此信道传输时,信道的平均互信息达到极小值.用途:量化,频带压缩,数据转换,数据压缩等等开始框图:输入二源对称信道概率信源熵汉明失真信源H(D)输出率失真函数R(D)结束计算过程:性质:R(D)是非负的实数,定义域为0到Dmax,其值为0到H(X);当D&g

19、t;Dmax时,R(D)=0。R(D)是关于D的下凸函数,因而也是关于D的连续函数。R(D)是关于D的严格递减函数。对于同一D,信源分布越均匀,R(D)就越大,信源压缩的可能性越小,反之,若信源分布越不均匀,即信源剩余度越大R(D)就越小,压缩的可能性越大。实验四、香农编码一、实验目的(1)了解香农编码的基本原理及其特点;(2)熟悉掌握香农编码的方法和步骤;(3)掌握Matlab编写香农编码的程序。二、实验条件计算机一台,MATLAB仿真软件。三、实验原理哈夫曼编码的步骤如下: 将信源消息符号按其出现的概率大小依次排列 p(x1)p(x2) p(xn)取两个概率最小的字母分别配以0和1两码元,

20、并将这两个概率相加作为一个新字母的概率,与未分配的二进符号的字母重新排队。 对重排后的两个概率最小符号重复步骤的过程。不断继续上述过程,直到最后两个符号配以0和1为止。 从最后一级开始,向前返回得到各个信源符号所对应的码元序列,即相应的码字。四、实验内容(1)根据香农编码的方法和步骤,用香农编码编写程序(2)用编写的源程序验证书中例题的正确性。五、实验报告要求总结香农编码的基本原理及其特点?function y=b2d10(x)%十进制小数转化为2进制for i=1:8 temp=x.*2; if(temp<1) y(i)=0; x=temp; elsey(i)=1; x=temp-1;

21、 endend clc;clear;a=0.20,0.19,0.18,0.17,0.15,0.10,0.01;k=length(a);y=0; %数组长度(即行数或列数中的较大值)for i=1:k-1 %替换最大概率 for n=i+1:k if(a(i)<a(n) t=a(i); a(i)=a(n); a(n)=t; end endends=zeros(k,1);b=zeros(k,1);p=zeros(k,1); %表示k行一列全是0的数组for m=1:k %步长为1 s(m)=y; y=y+a(m); b(m)=ceil(-log2(a(m); %ceil表示向离他最近的大整数

22、圆整 ,求编码位数 x=zeros(b(m),1); %b(m)行一列全是0的数组 x=s(m); %求和结果,累加概率 p=b2d10(x); %调用函数b2d10,函数表示十进制小数转化为二进制 for r=1:b(m) %步长为1 z(r)=p(r); end disp('输出结果为:') %disp相当于输出,c语言中的putchar disp('初始概率'),disp(a(m) disp('求和结果'),disp(s(m) disp('编码位数'),disp(b(m) disp('最终编码'),disp(

23、z')end输出结果为:初始概率 0.2000求和结果 0编码位数 3最终编码 0 0 0输出结果为:初始概率 0.1900求和结果 0.2000编码位数 3最终编码 0 0 1输出结果为:初始概率 0.1800求和结果 0.3900编码位数 3最终编码 0 1 1输出结果为:初始概率 0.1700求和结果 0.5700编码位数 3最终编码 1 0 0输出结果为:初始概率 0.1500求和结果 0.7400编码位数 3最终编码 1 0 1输出结果为:初始概率 0.1000求和结果 0.8900编码位数 4最终编码 1 1 1 0输出结果为:初始概率 0.0100求和结果 0.9900编

24、码位数 7最终编码 1 1 1 1 1 1 0 实验总结:香农编码的原理:香农第一定理指出了平均码长与信源之间的关系,同时也指出了可以通过编码使平均码长达到极限值,这是一个很重要的极限定理。香农第一定理指出,选择每个码字的长度Ki满足下式 I(xi)KI(xi)+1,   i" 就可以得到这种码。这种编码方法就是香农编码。香农编码多余度稍大,效率低,实用性不强。但是它是依据编码定理而来,有重要的理论意义。香农编码是码符号概率大的用短码表示,概率小的是用长码表示,程序中对概率排序,最后求得的码字就依次与排序后的符号概率对应。先确定了码字

25、长度,而编码效率不高。香农码有系统的、惟一的编码方法过程:信源消息符号ai符号概率p(ai)累加概率pi-logp(ai)码字长度Ki码字a10.2002.343000a20.190.22.413001a30.180.392.483011a40.170.572.563100a50.150.742.743101a60.100.893.3441110a70.010.996.6671111110实验五、Huffman编码一、实验目的1. 进一步熟悉Huffman编码过程;2. 掌握Matlab程序的设计和调试技术。二、实验条件计算机一台,MATLAB仿真软件。三、实验原理1、二进制Huffman编码

26、的基本原理及算法(1) 把信源符号集中的所有符号按概率从大到小排队。(2) 取概率最小的两个符号作为两片叶子合并(缩减)到一个 节点。(3) 视此节点为新符号,其概率等于被合并(缩减)的两个概率之和,参与概率排队。(4) 重复(2)(3)两步骤,直至全部符号都被合并(缩减)到根。 (5) 从根出发,对各分枝标记0和1。从根到叶的路径就给出了各个码字的编码和码长。2、程序设计的原理 (1)程序的输入:以一维数组的形式输入要进行huffman编码的信源符号的概率,在运行该程序前,显示文字提示信息,提示所要输入的概率矢量;然后对输入的概率矢量进行合法性判断,原则为:如果概率矢量中存在小于0的项,则输

27、入不合法,提示重新输入;如果概率矢量的求和大于1,则输入也不合法,提示重新输入。(2)huffman编码具体实现原理: 1>在输入的概率矩阵p正确的前提条件下,对p进行排序,并用矩阵L记录p排序之前各元素的顺序,然后将排序后的概率数组p的前两项,即概率最小的两个数加和,得到新的一组概率序列,重复以上过程,最后得到一个记录概率加和过程的矩阵p以及每次排序之前概率顺序的矩阵a。2>新生成一个n-1行n列,并且每个元素含有n个字符的空白矩阵,然后进行huffman编码:将c矩阵的第n-1行的第一和第二个元素分别令为0和1(表示在编码时,根节点之下的概率较小的元素后补0,概率较大的元素后补

28、1,后面的编码都遵守这个原则)然后对n-i-1的第一、二个元素进行编码,首先在矩阵a中第n-i行找到值为1所在的位置,然后在c矩阵中第n-i行中找到对应位置的编码(该编码即为第n-i-1行第一、二个元素的根节点),则矩阵c的第n-i行的第一、二个元素的n-1的字符为以上求得的编码值,根据之前的规则,第一个元素最后补0,第二个元素最后补1,则完成该行的第一二个元素的编码,最后将该行的其他元素按照“矩阵c中第n-i行第j+1列的值等于对应于a矩阵中第n-i+1行中值为j+1的前面一个元素的位置在c矩阵中的编码值”的原则进行赋值,重复以上过程即可完成huffman编码。3、哈夫曼编码的程序流程图:初

29、始化原始消息数将n个消息进行排序装入哈夫曼数据使左分支编码为1,右分值编码为0码字初始化为0排序列表初始化获得哈夫曼码字分别遍历左右分支节结束将最后两个出现概率最小的消息合成一个消息将消息添加到队列的最后为n-1消息重新进行排列做准备遍历至原始消息,即叶子节点,输出读码字开始四、实验要求1. 输入:信源符号个数r、信源的概率分布P;2. 输出:每个信源符号对应的Huffman编码的码字。五、实验报告要求总结Huffman编码的基本原理及其特点?function h,l=huffman(p) p=0.20 0.19 0.18 0.17 0.10 0.15 0.01if (length(find(

30、p<0)=0) error('Not a prob,negative component'); end if (abs(sum(p)-1)>10e-10) error('Not a prob.vector,component do not add to 1') end n=length(p);for i=1:n-1 for j=i:n if p(i)<=p(j) q=p(i);p(i)=p(j);p(j)=q; end endenddisp('¸ÅÂÊ·Ö²¼

31、;'),pq=p; m=zeros(n-1,n); for i=1:n-1 q,l=sort(q); m(i,:)=l(1:n-i+1),zeros(1,i-1); q=q(1)+q(2),q(3:n),1; end for i=1:n-1 c(i,:)=blanks(n*n); end c(n-1,n)='0' c(n-1,2*n)='1' for i=2:n-1 c(n-i,1:n-1)=c(n-i+1,n*(find(m(n-i+1,:)=1). -(n-2):n*(find(m(n-i+1,:)=1); c(n-i,n)='0' c(n-i,n+1:2*n-1)=c(n-i,1:n-1); c(n-i,2*n)='1' for j=1:i-1 c(n-i,(j+1)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论