信息论与编码实验二

更新时间:2024-01-12 23:59:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验二 离散信道及其容量

一、实验目的

1、 2、 3、

理解离散信道容量的内涵;

掌握求二元对称信道(BSC)互信息量和容量的设计方法; 掌握二元扩展信道的设计方法并会求其平均互信息量。

二、实验原理

若某信道输入的是N维序列x,其概率分布为q(x),输出是N维

序列y,则平均互信息量记为I(X;Y),该信道的信道容量C定义为

C?maxI(X;Y)。

q(x)三、实验内容

1、给定BSC信道,信源概率空间为

X

P

=

0 1 0.6 0.4

?0.990.01?信道矩阵 P??? 0.010.99??求该信道的I(X;Y)和容量,画出I(X;Y)和?、C和p的关系曲线。 2 、编写一M脚本文件t03.m,实现如下功能:

在任意输入一信道矩阵P后,能够判断是否离散对称信道,若是,求出信道容量C。 3、已知X=(0,1,2);Y=(0,1,2,3),信源概率空间和信道矩阵分别为

X

Px

=

0 1 2 0.3 0.5 0.2

P=

0.1 0.3 0 0.6 0.3 0.5 0.2 0 0.1 0.7 0.1 0.1

求: 平均互信息量;

4、 对题(1)求其二次扩展信道的平均互信息I(X;Y)。

四、程序设计与算法描述

1)设计思路

I(X;Y) 1、信道容量C?maxq(x)因此要求给定信道的信道容量,只要知道该信道的最大互信息量,即求信道容量就是求信道互信息量的过程。

程序代码:

clear all,clc; w=0.6; w1=1-w; p=0.01;

X=[0 1]; P=[0.6 0.4];

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.3f\\n信道容量:%6.3f',I_XY,C); p=eps:0.001:1-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:0.001: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');

实验结果:

2、离散对称信道:当离散准对称信道划分的子集只有一个时,信道关于输入和输出对称。

离散准对称信道:若一个离散无记忆信道的信道矩阵中,按照信道的输出集Y可以将信道划分成n个子集,每个子矩阵中的每一行都是其他行同一组元素的不同排列。 实验代码:

clc;clear;

P=input('输入信道转移概率矩阵:'); [r,c]=size(P);

if sum(P,2)-1~=zeros(1,r)';

error('输入的信道矩阵不合法!');%矩阵行和一定要为1 end l=1; Sum=0; for j=2:c

for i=1:r%i是行变量 for k=1:r

if P(k,j)==P(i,1) Sum=Sum+1; break; end end end

end%判断是否离散输出对称信道 if Sum==r*(c-1)

fprintf('是离散输出对称信道!\\n',j); else fprintf('不是对称信道!'); end

实验结果:

ans =

0.0100 0.9900 0.9900 0.0100 是离散输出对称信道! ans =

0.4000 0.6000

0.3000 0.7000 不是对称信道!

3、二次扩展信道的互信息量I(X;Y)=H(Y)-H(Y|X). 实验代码:

clc,clear; p=0.01;

P_X1=[0.6,0.4]; 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(1),P_X1(2)^2]; %求二次扩展后信道矩阵N N=zeros(4); for i=1:4 for j=1:4

l=length(find(xor(X2(i,:),Y2(j,:))==0));%比较得正确传递元素个数 N(i,j)=p1^l*p^(2-l);

end end %下面求I P_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次扩展信道的平均互信息为:%5.3f',I_XY2);

实验结果:

2次扩展信道的平均互信息为:1.783 2)实验中出现的问题及解决方法;

1、信道容量与互信息量有关,而互信息量又与信源熵相关,所以要求得信道容量就必须知道信道传递概率,然后根据公式一步一步计算。

2、对于判断离散对称信道,不需要弄清楚的是它的概念,根据定义来判断。

3、对于扩展信道,分有记忆的和无记忆的,在不确定的情况下计算扩展信源的熵,我们要根据定义来计算。

五、实验心得

通过本次实验,我对于信道的分类,各种信道的特点有了一定的认识和了解。实验中涉及的主要是二元对称信道,而它的最佳分布是输入和输出均对称。

实验中最主要的部分还是关于信道容量的计算,此次实验,让我们验证了课本上的定理,也让我们更好地理解和掌握了课堂上所学的知识。

本文来源:https://www.bwwdw.com/article/tpqo.html

Top