当前位置:
文档之家› matlab 信道容量的迭代计算
matlab 信道容量的迭代计算
迭代次数n:
8
ans =
0.3263
end
[r,s]=size(P);
Pa=(1/(r+eps))*ones(1,r);
sumrow=zeros(1,r);
Pba=P;
n=0;
C=0;
CC=1;
while abs(CC-C)>=k
n=n+1;
Pb=zeros(1,s);
for j=1:s
for i=1:r
Pb(j)=Pb(j)+Pa(i)*Pba(i,j);
实验源程序如下:
function[CC,Paa]=ChannelCap(P,k)
if(length(find(P<0))~=0)
error('Not a prob.vector,negative component,不是概率分布');
end
if(abs(sum(P')-1)>10e-10)
error('Not a prob.vector,component do not add up to 1。不是概率分布');
disp(s4),disp(r);
disp(s5),disp(s);
disp(s2),disp(CC);
disp(s6),disp(k);
disp(s3),disp(n);
设置k=0.00001
>> k=0.00001
k =
1.0000e-005
输入信道矩阵P:
>> P=[1/2 1/2 0;0.2 0.3 0.5]
L=zeros(1,r);
sumaa=0;
for i=1:r
for j=1:s
L(i)ps);
end
a(i)=exp(L(i));
end
sumaa=sum(a);
for i=1:r
Paa(i)=a(i)/(sumaa+eps);
end
CC=log2(sumaa);
《信息论基础》课程实验报告(四)
班级:计算072班姓名:白梅学号:20071189
实验内容:信道容量的迭代计算。
实验要求:
1.输入一个信道矩阵;
2.输出下列内容:(1)最佳输入概率分布;(2)信道容量;(3)迭代次数;(4)输入符号的个数;(5)输出符号的个数;(6)迭代计算精度;
3.实验报告中要包括源代码和输入、输出结果。
Pa=Paa;
s0='很好!输入正确,迭代结果如下: ';
s1='最佳输入概率分布Pa:';
s2='信道容量C:';
s3='迭代次数n:';
s4='输入符号数r:';
s5='输出符号数s:';
s6='迭代计算精度k:';
for i=1:r
B{i}=i;
end
end
disp(s0);
disp(s1),disp(B),disp(Paa);
end
end
suma=zeros(1,s);
for j=1:s
for i=1:r
Pab(j,i)=Pa(i)*Pba(i,j)/(Pb(j)+eps);
suma(j)=suma(j)+Pa(i)*Pba(i,j)*log2((Pab(j,i)+eps)/(Pa(i)+eps));
end
end
C=sum(suma);
P =
0.5000 0.5000 0
0.2000 0.3000 0.5000
得到输出结果:
>> ChannelCap(P,k)
很好!输入正确,迭代结果如下:
最佳输入概率分布Pa:
[1] [2]
0.5949 0.4051
输入符号数r:
2
输出符号数s:
3
信道容量C:
0.3263
迭代计算精度k:
1.0000e-005