信道容量迭代算法
时间:2025-05-10
时间:2025-05-10
实 验 目 的: 通过该实验,掌握通过计算机实验信道容量的迭代算法
实 验 环 境: Matlab7.1
实 验 内 容 及 过 程: 实验原理(流程图):
输入
e=input('迭代精度e=')
[r,s]=size(P);
k=0;
C=0;
C_0=0;
C_1=0;
[r,s]=size(P);
for i=1:r
if(sum(P(i,:))~=1)
error('概率转移矩阵输入有误!!')
return;
end
for j=1:s
if(P(i,j)<0||P(i,j)>1)
error('概率转移矩阵输入有误!!')
return;
end
end
end
X=ones(1,r)/r;
A=zeros(1,r);
B=zeros(r,s);
while(1)
k=k+1;
for i=1:r
for j=1:s
B(i,j)=log(P(i,j)/(X*P(:,j))+eps); end
A(1,i)=exp(P(i,:)*B(i,:)'); end
C_0=log2(X*A');
C_1=log2(max(A));
if (abs(C_0-C_1)<e)
C=C_0;
fprintf('迭代次数: k=%d\n',k)
fprintf('信道容量: C=%f比特/符号\n',C) break;
else
X=(X.*A)/(X*A');
continue;
end
end
实 验 结 果 及 分 析:
转移概率矩阵P=[0.5 0.3 0.2;0.3 0.5 0.2] P =
0.5000 0.3000 0.2000 0.3000 0.5000 0.2000 迭代精度e=0.000001
e =
1.0000e-006
迭代次数: k=1
信道容量: C=0.036453比特/符号
实 验 心 得: 实验迭代法不好了解,编写程序较困难。