1、信息论实验指导书应用MATLAB软件实现 信息与编码理论上机实验指导书 应用MATLAB软件实现 UPC通信工程系前 言 本实验系列是采用MATLAB软件,主要针对信息论基础课程中的相关内容进行的实验。 MATLAB是一完整的并可扩展的计算机环境,是一种进行科学和工程计算的交互式程序语言。它的基本数据单元是不需要制定维数的矩阵,它可直接用于表达数学的算式和技术概念,解决同样的数值计算问题,使用MATLAB要比使用Basic、Fortran和C语言等提高效率许多倍。MATLAB还是一种有利的教学工具,在大学的线性代数课程以及其它领域的高一级课程的教学中,已称为标准的教学工具。 该指导书共安排了4
2、个实验,现就一些情况作简要说明:各实验要求学生在MATLAB系统上尽量独立完成,弄懂。实验内容紧扣课程教学内容的各主要基本概念,希望同学们在完成每个实验后,对所学的内容起到巩固和加深理解的作用。每个实验做完后必须交一份实验报告。恳请各位实验老师和同学在实验中提出宝贵意见,以利于以后改进提高。实验一 离散信源及其信息测度.3实验二 离散信道及其容量.6实验三 无失真信源编码.8实验四 有噪信道编码.10附录 部分常用MATLAB命令.12实验一 离散信源及其信息测度一、实验目的离散无记忆信源是一种最简单且最重要的信源,可以用完备的离散型概率空间来描述。本实验通过计算给定的信源的熵,加深对信源及其
3、扩展信源的熵的概念的理解。二、实验环境windows XP,MATLAB 三、实验原理信源输出的各消息的自信息量的数学期望为信源的信息熵,表达式如下 信源熵是信源的统计平均不确定性的描述,是概率函数的函数。四、实验内容 1、有条100字符英文信息,假定其中每字符从26个英文字母和1个空格中等概选取,那么每条信息提供的信息量为多少若将27个字符分为三类,9个出现概率占2/7,13个出现概率占4/7,5个出现占1/7,而每类中符号出现等概,求该字符信源的信息熵。 2、二进制通信系统使用0、1,由于存在失真,传输会产生误码,用符号表示下列事件:u0:一个0发出;u1:一个1发出;v0:一个0收到;v
4、1:一个1收到;给定下列概率:p(u0)=1/2,p(v0|u0)=3/4,p(v0|u1)=1/2。求:(a)已知发出一个0,求收到符号后得到的信息量;(b)已知发出的符号,求收到符号后得到的信息量; 3、给定离散无记忆信源X,其概率空间为 求该信源的熵和其二次、三次扩展信源的熵。(编写一M函数文件:function H_X1,H_X2,H_X3=t03(X1,P1)%t03 求信源和其二次、三次扩展信源的熵%输入为X1,P1,分别为信源符号和概率阵%输出为原离散信源的熵H_X1和二次、三次扩展信源的熵H_X2、H_X3X1X2P00 01 02 10 11 12 20 21 221/4 1
5、/18 0 1/18 1/3 1/18 0 1/18 7/36= 4、某离散二维平稳信源的概率空间: 设发出的符号只与前一个符号有关。求:(a)认为信源符号之间无依赖性时,信源X的信息熵H(X);(b)认为有依赖性时的条件熵H(X2X1);(c)联合熵H(X1X2);(d)根据以上三者之间的关系,验证结果的正确性。 5、有两个二元随机变量X和Y,它们的联合概率分布函数如下表: Y X01 01/8 3/81 3/8 1/8同时定义另一随机变量Z=X*Y,试求:a、熵H(X),H(Z),H(X,Z)和H(X,Y,Z);b、条件熵H(X|Y),H(X|Z),H(Y|X,Z);c、互信息I(X;Y)
6、,I(X;Z),I(X;Y|Z); 五、实验过程每个实验项目包括:1)设计思路2)实验中出现的问题及解决方法;1)设计思路1、每字符从26 个英文字母和1 个空格中等概选取,一共100 个字符,那么可以组成27100 条消息,每条消息出现的概率是1/(27100),由自信息量公式可得每条消息的自信息量。2、求出各种条件概率,将其代入信息量公式计算信息量。3、离散无记忆信源X 熵,可将其概率代入信息熵的计算公式得到,二次,三次扩展信源,可先求出其概率空间。4.由离散二维平稳信源的概率空间,及信息熵,条件熵,联合熵的公式,可得到我们要的结果。5、计算各种情况的概率,X 的概率,Y 的概率,Z=XY
7、 联合概率等,然后代入公式求解。6、程序代码: clear all,clc;%有条100 字符英文信息,假定其中每字符从26 个英文字母和1 个空格中等概选取%求每条信息提供的信息量H1=log2(27100)%事件:u0:一个0 发出;u1:一个1 发出; v0:一个0 收到;v1:一个1 收到;%给定下列概率:p(u0)=1/2,p(v0|u0)=3/4,p(v0|u1)=1/2p_u0=1/2;p_v0_u0=3/4;p_v0_u1=1/2;p_v1_u0=1-p_v0_u0;%(a)已知发出一个0,求收到符号后得到的信息量;H_V_u0=p_v0_u0*log2(p_v0_u0)-p_
8、v1_u0*log2(p_v1_u0);%(b)已知发出的符号,求收到符号后得到的信息量p_u1=1-p_u0;p_v1_u1=1-p_v0_u1;p_u0v0=p_v0_u0*p_u0;p_u0v1=p_v1_u0*p_u0;p_u1v0=p_v0_u1*p_u1;p_u1v1=p_v1_u1*p_u1;H_V_U=-p_u0v0*log2(p_v0_u0)-p_u0v1*log2(p_v1_u0)-p_u1v0*log2(p_v0_u1)-p_u1v1*log2(p_v1_u1)%c=,;y1,y2,y3=t05(c)%信源的熵和其二次、三次扩展信源的熵%P_X1X2=1/4 1/18 0
9、;1/18 1/3 1/18;0 1/18 7/36;%联合分布%(a)认为信源符号之间无依赖性时,信源X 的信息熵H(X);P_X=sum(P_X1X2);H_X=sum(-P_X.*log2(P_X);fprintf(X 的信源熵: H_X=%6.3fn,H_X);%(b)认为有依赖性时的条件熵H(X2X1);P_X1_X2=P_X1X2(:,1)/P_X(1),P_X1X2(:,2)/P_X(2),P_X1X2(:,3)/P_X(3);%条件矩阵P_X1_X2(find(P_X1_X2=0)=1;%将0 换为1H_X1_X2=sum(-P_X1X2.*log2(P_X1_X2);fpri
10、ntf(X 的条件熵: n H_X1_X2=%6.3fn,H_X1_X2);%(c)联合熵H(X1X2)P_X1X2(find(P_X1X2=0)=1;%将0 换为1H_X1X2=sum(-P_X1X2.*log2(P_X1X2);fprintf(X 的联合熵: n H_X1X2=%6.3fn,H_X1X2);%有两个二元随机变量X 和Y,同时定义另一随机变量Z=X*Y,试求:% a、熵H(X),H(Z),H(X,Z)和H(X,Y,Z);% b、条件熵H(X|Y),H(Y|X,Z);% c、互信息I(X;Y),I(X;Y|Z);功能函数t03:function H_X1,H_X2,H_X3=t
11、03(X1,P1)%t03%输入为X1,P1,分别为信源符号和概率阵%输出为原离散信源的熵和扩展信源的熵X2=X_grow(2);p0=;p1=1-p0;H_X1=sum(-P1.*log2(P1);l=length(X1);P=zeros(1:l2);for i=1:l2l1=length(find(X2(i,:);P2(i)=p0(l-l1)*p1l1;endH_X2=sum(-P2.*log2(P2);%-function s=X_grow(n)s=zeros(2n,n);for i=2:2nj=n;%for j=6:-1:1s(i,:)=s(i-1,:);s(i,j)=s(i-1,j)
12、+1;for j=n:-1:1if (s(i,j)=2)s(i,j)=0;s(i,j-1)=s(i,j-1)+1;endendEnd功能函数t05:function H_X1,H_X2,H_X3=t05(P1)H_X1=sum(-P1.*log2(P1);x=zeros(1,length(P1)2);y=zeros(1,length(P1)3);a=1;b=1;for i=1:length(P1)for j=1:length(P1)x(a)=P1(i)*P1(j);a=a+1;endendH_X2=sum(-x.*log2(x);for i=1:length(P1)for j=1:length
13、(P1)for k=1:length(P1)y(b)=P1(i)*P1(j)*P1(k);b=b+1;endendendH_X2=sum(-x.*log2(x);H_X3=sum(-y.*log2(y);部分结果:H1 =H_V_U =y1 =y2 =y3 =X 的信源熵: H_X= X 的条件熵:H_X1_X2= X 的条件熵:H_X1_X2= X 的条件熵:H_X1_X2= X 的联合熵:H_X1X2= X 的联合熵:H_X1X2= X 的联合熵:H_X1X2= 2)实验中出现的问题及解决方法;实验中遇到的问题有很多,如各种概率空间的计算,弄混,概念不清楚,公式不熟悉,对信息论的定理概念及
14、意义不理解,不能灵活运用。对于各种概率的计算,需要准确分析,然后逐一进行计算。信息论的定理概念及意义,翻书查阅,尽可能的熟悉,理解,并加以运用。六、实验总结通过实验,回顾了各种概率的求解方法,该实验主要是计算消息的信息量,信息熵。在实验过程中,不断地学习查阅课本,巩固了上课的知识,对所学的定理和公式有了更加深刻的认识和理解。实验二 离散信道及其容量一、实验目的1、理解离散信道容量的内涵;2、掌握求二元对称信道(BSC)互信息量和容量的设计方法;3、掌握二元扩展信道的设计方法并会求其平均互信息量。二、实验环境windows XP,MATLAB 7三、实验原理若某信道输入的是N维序列x,其概率分布
15、为q(x),输出是N维序列y,则平均互信息量记为I(X;Y),该信道的信道容量C定义为。四、实验内容 1、给定BSC信道,信源概率空间为 信道矩阵 求该信道的I(X;Y)和容量,画出I(X;Y)和、C和p的关系曲线。 2 、编写一M脚本文件,实现如下功能: 在任意输入一信道矩阵P后,能够判断是否离散对称信道,若是,求出信道容量C。 3、已知X=(0,1,2);Y=(0,1,2,3),信源概率空间和信道矩阵分别为 0 0 P= 求: 平均互信息量; 4、 对题(1)求其二次扩展信道的平均互信息I(X;Y)。五、实验过程每个实验项目包括:1)设计思路2)实验中出现的问题及解决方法;1)设计思路1、
16、信道容量max (X; Y)C = I,因此要求给定信道的信道容量,只要知道该信道的最大互信息量,即求信道容量就是求信道互信息量的过程。程序代码:clear all,clc;w=;w1=1-w;p=;XP = p1=1-p;save data1 p p1;I_XY=(w*p1+w1*p)*log2(1/(w*p1+w1*p)+(w*p+w1*p1)*log2(1/(w*p+w1*p1)- .(p*log2(1/p)+p1*log2(1/p1);C=1-(p*log2(1/p)+p1*log2(1/p1);fprintf(互信息量:%6.3fn信道容量:%6.3f,I_XY,C);p=eps:1
17、-eps;p1=1-p;C=1-(p.*log2(1./p)+p1.*log2(1./p1);subplot(1,2,1),plot(p,C),xlabel(p),ylabel(C);load data1;w=eps:1-eps;w1=1-w;I_XY=(w.*p1+w1.*p).*log2(1./(w.*p1+w1.*p)+(w.*p+w1.*p1).*log2(1./(w.*p+w1.*p1)- .(p.*log2(1./p)+p1.*log2(1./p1);subplot(1,2,2),plot(w,I_XY)xlabel(w),ylabel(I_XY);实验结果:互信息量:信道容量:I
18、(X;Y)和 、C和p的关系曲线图:0 101pC0 101wIY2、离散对称信道:当离散准对称信道划分的子集只有一个时,信道关于输入和输出对称。离散准对称信道:若一个离散无记忆信道的信道矩阵中,按照信道的输出集Y可以将信道划分成n个子集,每个子矩阵中的每一行都是其他行同一组元素的不同排列。实验代码:clc;clear;P=input(输入信道转移概率矩阵:);r,c=size(P);if sum(P,2)-1=zeros(1,r);error(输入的信道矩阵不合法!);%矩阵行和一定要为1endl=1;Sum=0;for j=2:cfor i=1:r%i是行变量for k=1:rif P(k
19、,j)=P(i,1)Sum=Sum+1;break;endendendendif Sum=r*(c-1)fprintf(是离散输出对称信道!n,j);else fprintf(不是对称信道!);end实验结果:输入信道转移概率矩阵: ; 是离散输出对称信道!输入信道转移概率矩阵: ; 不是对称信道!3、二次扩展信道的互信息量I(X;Y)=H(Y)-H(Y|X).实验代码:clc,clear;p=;P_X1=,;p1=1-p;X2=0,0;0,1;1,0;1,1;%二次扩展输入符号阵Y2=X2;%二次扩展输出符号P_X2=P_X1(1)2,P_X1(1)*P_X1(2),P_X1(2)*P_X1
20、(1),P_X1(2)2;%求二次扩展后信道矩阵NN=zeros(4);for i=1:4for j=1:4l=length(find(xor(X2(i,:),Y2(j,:)=0);%比较得正确传递元素个数N(i,j)=p1l*p(2-l);endend%下面求IP_Y2=P_X2*N;P_XY2=P_X2(1)*N(1,:);P_X2(2)*N(2,:);P_X2(3)*N(3,:);P_X2(4)*N(4,:);%联合分布H_Y2=sum(-P_Y2.*log2(P_Y2);H_Y_X2=sum(sum(-P_XY2.*log2(N);I_XY2=H_Y2-H_Y_X2;fprintf(2
21、次扩展信道的平均互信息为:%5.3f,I_XY2);实验结果:2次扩展信道的平均互信息为:2)实验中出现的问题及解决方法;1、信道容量与互信息量有关,而互信息量又与信源熵相关,所以要求得信道容量就必须知道信道传递概率,然后根据公式一步一步计算。2、对于判断离散对称信道,不需要弄清楚的是它的概念,根据定义来判断。3、对于扩展信道,分有记忆的和无记忆的,在不确定的情况下计算扩展信源的熵,我们要根据定义来计算。六、实验总结通过本次实验,我对于信道的分类,各种信道的特点有了一定的认识和了解。实验中涉及的主要是二元对称信道,而它的最佳分布是输入和输出均对称。实验中最主要的部分还是关于信道容量的计算,此次
22、实验,让我们验证了课本上的定理,也让我们更好地理解和掌握了课堂上所学的知识。_实验三 无失真信源编码一、实验目的1、理解香农第一定理指出平均码长与信源之间的关系;2、加深理解香农编码具有的重要的理论意义。3、掌握霍夫曼编码的原理;4、掌握霍夫曼编码的方法和步骤;二、实验环境windows XP,MATLAB 7三、实验原理香农第一定理:设离散无记忆信源为 熵为H(S),其N次扩展信源为 熵为H(SN)。码符号集X=(x1,x2,xr)。先对信源进行编码,总可以找到一种编码方法,构成惟一可以码,使S中每个信源符号所需的平均码长满足: 当N时 是平均码长 是对应的码字长度四、实验内容 1、根据实验
23、原理,设计shannon编码方法,在给定 条件下,实现香农编码并算出编码效率。2、在给定离散无记忆信源SPs1 s2 s3 s41/8 5/16 7/16 1/8= 条件下,实现二进制霍夫曼编码,求最后得到的码字并算出编码效率。五、实验过程每个实验项目包括:1)设计思路2)实验中出现的问题及解决方法;某一离散信源概率分布:p=1/2,1/4,1/8,1/16,1/16 求信源的熵,并对该信源进行二元哈夫曼编码,得到码字和平均码长以及编码效率。Matlab程序:function h,l=huffman(p)p=1/2 1/4 1/8 1/16 1/16;if length(find(p10e-1
24、0 error(Input is not a ,the sun of the components is not equal to 1)endn=length(p); q=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,:
25、)=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)*n+1:(j+2)*n)=c(n-i+1,. n*(find(m(n-i+1,:)=j+1)-1)+1:n*find(m(n-i+1,:)=j+1); end; end for i=1:n h(i,1:n)=c(1,n*(find(m(1,:)=i)-1)+1:find(m(1,:)=i)*n); l1(i)=length(find(abs(h(i,:)=32);
26、 end l=sum(p.*l1)运行结果为:l = ans = 1 01 001 0000 0001六、实验总结 实验四 有噪信道编码一、实验目的1、理解极大似然译码规则;2、掌握简单重复编码方法;3、掌握()线性码及其编码方法;二、实验环境windows XP,MATLAB 7三、实验原理在确定译码规则F(yj)=xi,i=1,2,3,s之后,若信道输出端接收到的符号为yj,则一定译成xi。如果发送端发送的就是xi,这就是正确译码;反之,若发送端发送的是xk,就认为是错误译码。经过译码的平均错误概率为 若选择译码函数F(yj)=x*,使之满足条件 对则称为极大似然译码规则。四、实验内容 P
27、=1、有一BSC信道矩阵: 采用简单重复编码,设计函数在编码次数分别为n=3、5、7、9,输入消息符号个数M=2条件下,求译码平均错误概率PE和信息传输速率R的值。2、对上题的信道矩阵,若采用()线性码,M=4,5,求此时的信息传输速率R和误码率PE。五、实验过程)设有一离散信道,其信道传递矩阵为:,并设试分别按最小错误概率准则与最大似然译码准则确定译码规则,并计算相应的平均错误概率。 1、按最小错误概率准则,P(ab)=1/4 1/6 1/12,1/24 1/8 1/12 ,1/12 1/24 1/8Matlab程序: p=(1/4+1/24)+(1/6+1/8)+(1/12+1/12)运行结果:p = ,即相应平均错误概率为:按最大似然译码准则译码规则:Matlab程序:p2=1/2*(1/3+1/6)+1/4*(1/6+1/3)+1/4*(1/3+1/6)程序运行结果:p2 =即相应平均错误概率为:附录:部分常用MATLAB命令管理命令和函数help在线帮助文件doc装入超文本说明whatM、MAT、MEX文件的目录列表type列出M文件lookfor通过help条目搜索关键字which定位函数和文件
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1