信息论与编码实验报告
实验一:计算离散信源的熵
一、实验设备:
1、计算机
2、软件:Matlab
二、实验目的:
1、熟悉离散信源的特点;
2、学习仿真离散信源的方法
3、学习离散信源平均信息量的计算方法
4、熟悉 Matlab 编程;
三、习题:
1. 甲地天气预报构成的信源空间为:
乙地信源空间为:
求此两个信源的熵。求各种天气的自信息量。
代码:
x=[1/2,1/4,1/8,1/8];y=[7/8,1/8];HX=sum(-x.*log2(x))HY=sum(-y.*log2(y))IX=-log2(x)IY=-log2(y)
答案:
某信息源的符号集由A、B、C、D、E组成,设每一符号独立出现,其出现的概率分别为,1/4,1/8,1/8,3/16,5/16,试求该信源符号的平均信息量。
代码:
x=[1/4,1/8,1/8,3/16,5/16];HX=sum(-x.*log2(x))
答案:H(X) = 2.2272bit/符号
3、设有四个消息分别以概率1/4,1/8,1/8,1/2传送,每一消息的出现是相互独立的。试计算其平均信息量。
代码:
x=[1/4,1/8,1/8,1/2];
HX=sum(-x.*log2(x))
答案:H(X) =1.75bit/符号
4. 设一个二元信源(只有0和1两种符号)其概率空间为:
编程画出H与p的关系,并说明当P呈什么分布时,平均信息量达到最大值。
(说明:H=-p.*log2(p)-(1-p).log2(1-p);)
代码:
p= 1/1000000:1/1000:1;
H=-p.*log2(p)-(1-p).*log2(1-p);
plot(p,H)
grid on
xlabel('p');
ylabel('HP');
图:
实验二:验证熵的可加性与强可加性
【例2.6】
有一离散无记忆信源
验证二次扩展信源的熵等于离散信源的熵的2倍,即
代码:
x=[1/2,1/4,1/4];
hx=sum(x.*log2(1./x))
x2=[1/4,1/16,1/16,1/8,1/8,1/8,1/16,1/8,1/16]
hx2=sum(x2.*log2(1./x2))
答案:
2. 验证两个统计独立的信源,验证:
其中:
代码:
x=[1/2,1/4,1/4];
y=[1/3,1/3,1/3];
xy=[1/6,1/6,1/6,1/12,1/12,1/12,1/12,1/12,1/12]
hx=sum(x.*log2(1./x))
hy=sum(y.*log2(1./y))
Hxy=sum(xy.*log2(1./xy))
答案:
3、条件熵的计算与熵的强可加性
验证离散二维平稳信源,满足:
某一离散二维平稳信源
其联合概率分布为:
XjX2012012
编程计算:
联合熵
条件熵
验证:
代码:
x1=[11/36,4/9,1/4];
x2=[11/36,4/9,1/4];
b=[1/4,1/18,0;1/18,1/3,1/18;0,1/18,7/36];
HXY=0;
for i=1:size(b,1)
for j=1:size(b,2)
if b(i,j)>0
HXY=HXY-b(i,j).*log2(b(i,j));
end
end
end
HXY
Hx1=sum(x1.*log2(1./x1))
Hx2=sum(x2.*log2(1./x2))
b0=b(1,:);
b1=b(2,:);
b2=b(3,:);
x1x2=[b0./x2;b1./x2;b2./x2];
Hx1x2=0;
for i=1:size(x1x2,1)
for j=1:size(x1x2,2)
if x1x2(i,j)>0
Hx1x2=Hx1x2-b(i,j).*log2(x1x2(i,j));
end
end
end
Hx1x2
答案:
实验三:离散信道的平均互信息的计算
1. 【习题3.1】
设信源
通过一干扰信道,接收到符号为,其信道矩阵为:
求信源X中事件和分别含有的自信息;
收到消息后,获得的关于的信息量;
求信源X和输出变量Y的信息熵;
信道疑义度和噪声熵;
接收到消息Y后获得的平均互信息;
代码:
x=[0.6,0.4];
p=[5/6,1/6;3/4,1/4];
Ix1=log2(1./(x(1,1)))
Ix2=log2(1./(x(1,2)))
pxy=[x(1,1)*p(1,:);x(1,2)*p(2,:)];
py=[x*p(:,1),x*p(:,2)];
px_y=[pxy(:,1