logo资料库

信息论与编码实验报告.doc

第1页 / 共19页
第2页 / 共19页
第3页 / 共19页
第4页 / 共19页
第5页 / 共19页
第6页 / 共19页
第7页 / 共19页
第8页 / 共19页
资料共19页,剩余部分请下载后查看
习题: 1. 甲地天气预报构成的信源空间为: 云 大雨 1 4 , 1 8 ,  小雨    1 8    X ( ) p x         晴 1 2 , 乙地信源空间为:    Y ( ) p y         晴 7 8 , 小雨 1 8     求此两个信源的熵。求各种天气的自信息量。 案: ( H X ) 1.75;  H Y ( ) 0.5436  MATLAB代码: p1=[1/2,1/4,1/8,1/8];%p1´ú±í¼×ÐÅÔ´¶ÔÓ¦µÄ¸ÅÂÊ p2=[7/8,1/8];%p2´ú±íÒÒÐÅÔ´¶ÔÓ¦µÄ¸ÅÂÊ H1=0.0; H2=0.0; for i=1:4 H1=H1+p1(i)*log2(1/p1(i)); I1(i)=log2(1/p1(i)); end for j=1:2 I2(j)=log2(1/p2(j)); H2=H2-p2(j)*log2(p2(j)); end disp('输出两个信源的熵'); H1 H2 disp('输出甲的自信息量'); I1 disp('输出乙的自信息量'); I2 结果: H1 = 1.5000
H2 = H3 = 1.5850 3.0850 输出两个信源的熵 H1 = 1.7500 H2 = 0.5436 输出甲的自信息量 I1 = 1 2 输出乙的自信息量 I2 = 3 3 0.1926 3.0000 2、某信息源的符号集由 A、B、C、D、E 组成,设每一符号独立出现,其出现的 概率分别为,1/4,1/8,1/8,3/16,5/16,试求该信源符号的平均信息量。 (答案:H(X) = 2.2272bit/符号) MATLAB代码: p1=[1/4,1/8,1/8,3/16,5/16]; H1=0.0; for i=1:5 H1=H1+p1(i)*log2(1/p1(i)); end disp('输出信源的熵'); H1 结果:输出信源的熵 H1 = 2.2272 3、 设有四个消息分别以概率 1/4,1/8,1/8,1/2 传送,每一消息的出现是相 互独立的。试计算其平均信息量。(答案:H(X) =1.75bit/符号) MATLAB代码: p2=[1/4,1/8,1/8,1/2]; H2=0.0; for j=1:4 end disp('输出信源的熵'); H2 H2=H2+p2(j)*log2(1/p2(j)); 结果: 输出信源的熵 H2 = 1.7500
4. 设一个二元信源(只有 0 和 1 两种符号)其概率空间为:    X ( ) p x         0 1  , 1 p p  编程画出 H 与 p 的关系,并说明当 P 呈什么分布时,平均信息量达到最大值。 (说明:H=-p.*log2(p)-(1-p).log2(1-p);) MATLAB代码: p=0:0.01:1; H=-p.*log2(p)-(1-p).*log2(1-p); plot(p,H) grid on xlabel('p'); ylabel('H'); 结果: 1 0.9 0.8 0.7 0.6 H 0.5 0.4 0.3 0.2 0.1 0 0 0.1 0.2 0.3 0.4 0.5 p 0.6 0.7 0.8 0.9 1 实验二:验证熵的可加性与强可加性 1. 【例 2.6】 有一离散无记忆信源    X ( ) p x         a a a 1 3 1 1 1 , 2 4 4 2 ,     验证二次扩展信源 2X 的熵等于离散信源 X 的熵的 2 倍,即 H X ( 2 )  2 ( H X ) 答案: H X ( ) 1.5;  H X ( 2 ) 3.0  MATLAB代码: p1=[1/2,1/4,1/4];
p2=p1.*p1; H1=0.0; H2=0.0; for i=1:3 H1=H1+p1(i)*log2(1/p1(i)); for j=1:3 H2=H2+p2(j)*log2(1/p2(j)); end disp('H1+H2='); end H1 H2 H1+H2 结果: H1 = H2 = 1.5000 3 2. 验证两个统计独立的信源 ,X Y ,验证: ( ) H X H Y  ( ) H XY ( )  其中:    X ( ) p x         a a a 1 3 1 1 1 , 2 4 4 2 ,        Y ( ) p y         b b b 1 3 1 1 1 , 3 3 3 2 ,     H X ( ) 1.5,  H Y ( ) 1.585  H XY ( ) 3.085  MATLAB代码: p1=[1/2,1/4,1/4]; p2=[1/3,1/3,1/3]; p3=p1.*p2; H1=0.0; H2=0.0; H3=0.0; for i=1:3 end H1 H1=H1+p1(i)*log2(1/p1(i)); for j=1:3 H2=H2+p2(j)*log2(1/p2(j)); for k=1:3 H3=H3+p3(k)*log2(1/p3(k));
end end H2 H3 结果; H1 = H2 = H3 = 1.5000 1.5850 3.0850 H1+H2= ans = 3.0850 3、条件熵的计算与熵的强可加性 验证离散二维平稳信源,满足: H X X ( 1 )  H X ( )  1 2 H X X ( | 2 ) 1 某一离散二维平稳信源    X ( ) p x         1 2 0 11 4 1 36 9 4 , ,     2X X 其联合概率分布 1 1 ( p X X 为: ) 2 Xj 0 1 2 X2 1 1 18 1 3 1 18 0 1 4 1 18 0 2 0 1 18 7 36 编程计算: 1) 联合熵 2) 条件熵 3) 验证: H X X ( 1 ) 2 H X X ( | 2 ) 1 H X X ( 1 )  H X ( )  1 2 H X X ( | 2 ) 1 MATLAB 代码: HX1X2=0;
b=[1/4,1/18,0;1/18,1/3,1/18;0,1/18,7/36]; for i=1:size(b,1) for j=1:size(b,2) if b(i,j)>0 HX1X2=HX1X2-b(i,j).*log2(b(i,j)); end end end HX1=0; for i=1:size(b,1) p(i)=sum(b(i,:)); HX1=HX1-p(i)*log2(p(i)); end H=0; for i=1:size(b,1) for j=1:size(b,2) if b(i,j)>0 H=H-b(i,j)*log2(b(i,j)/p(i)); end end end HX1X2,HX1,H disp('HX1+H='); HX1+H 结果: HX1X2 = HX1 = H = 2.4144 1.5426 0.8717 HX1+H= ans = 2.4144 ) 1.5426; ( H X  ( H X X  ) 1 2.4144 1 2 答案: %联合熵的计算 HXY=0; for i=1:size(b,1) for j=1:size(b,2) if b(i,j)>0 H X X ) ( | 2 ( H X 1 ) 0.8717  1 H X X  ( | 2 ) 1  2.4144
HXY=HXY-b(i,j).*log2(b(i,j)); end end end HXY 实验三:离散信道的平均互信息的计算 1. 【习题 3.1】 设信源    X ( ) p x        x x 2 1 0.6,0.4    通过一干扰信道,接收到符号为 Y  [ , y y 1 2 ] ,其信道矩阵为: P        5 6 3 4 , 1 6 1 4       1) 求信源 X 中事件 1x 和 2x 分别含有的自信息; MATLAB代码: p1=[0.6,0.4]; for i=1:2; X1(i)=log2(1/p1(i)); end disp('输出信源的自信息量'); X1 结果: j  后,获得的关于 ( ix i  的信息量; 1,2) 输出信源的自信息量 X1 = 1.3219 1,2) 0.7370 2收到消息 ( jy MATLAB代码: P1=[0.6,0.4]; P2=[5/6,1/6;3/4,1/4]; n=length(P1); P3=(P2')*P1'; for i=1:n for j=1:n
end end disp('输出信息量:'); I 结果: 输出信息量 I = 0.0589 -0.2630 -0.0931 0.3219 3 求信源 X 和输出变量 Y 的信息熵; MATLAB代码: P1=[0.6,0.4]; P2=[5/6,1/6;3/4,1/4]; n=length(P1); P3=(P2')*P1'; X=0.0; Y=0.0; for i=1:2 X=X+P1(i)*log2(1/P1(i)); end for j=1:2; Y=Y+P3(j)*log2(1/P3(j)); end disp('输出X和Y信息的熵:'); X Y 结果:输出 X 和 Y 信息的熵: X = I(i,j)=log2(P2(j,i)/P3(i)); Y = 0.9710 0.7219 4 信道疑义度 ( H X Y 和噪声熵 ( ) | H Y X ; ) | 5 接收到消息 Y 后获得的平均互信息; 第4、5的MATLAB代码: px=[0.6 0.4]; n=length(px); P=[5/6 1/6;3/4 1/4]; P1=(P')*px'; hx=0;hy=0; for i=1:n hx=hx-px(i)*log2(px(i)); hy=hy-P1(i)*log2(P1(i));
分享到:
收藏