您的当前位置:首页正文

信道容量的计算

2020-11-24 来源:钮旅网
实验一: 信道容量的计算

一、实验目的

(1) 进一步熟悉信道容量的迭代算法。 (2) 学习如何将复杂的公式转化为程序。

(3) 掌握高级语言数值计算程序的设计和调试技术。 二、实验原理:

迭代算法计算信道容量的原理如图所示:

输入p(xi)p(0)(xi)

 p(y/x)ji aiexpp(yj/xi)lnp(xi)p(yj/xi)j i Cn1,nln p(xi)aip(xi)1i

C2n1,nlnmaxai i

否 C1n1,nC2n1,n

CC1n1,n

结束

三、实验步骤

11. 初始化信源分布:pi=,循环变量k=1,门限△,C(0)=-;

rp(xi)aip(xi)aii (k)2. (k)pjiijpir

p(k)ipjii1sexp[k)jilog(ij]3. p(k1)pij1rs

exp[pk)jilog(ij]i1j1)rs4. C(k1log[exp(p(k)jilogij)]

i1j11)5. 若

C(kC(k)C(k1),则k=k+1,转第2步

6. 输出P*=Pk1ik1r和C,终止。

7. 。分别对两个矩阵 0.690.260.050.05 0.25 0.7 0.690.260.05 0.7

四、实验程序

clc;clear all;

N = input('输入信源符号X的个数N='); M = input('输出信源符号Y的个数M=');

p_yx=zeros(N,M); %程序设计需要信道矩阵初始化为零 fprintf('输入信道矩阵概率\\n') for i=1:N

for j=1:M

p_yx(i,j)=input('p_yx=');%输入信道矩阵概率 if p_yx(i)<0

error('不符合概率分布') end end end

for i=1:N %各行概率累加求和 s(i)=0; for j=1:M

s(i)=s(i)+p_yx(i,j); end end

for i=1:N %判断是否符合概率分布 if (s(i)<=0.999999||s(i)>=1.000001)

进行计算比较结果 error('不符合概率分布') end end

b=input('输入迭代精度:');%输入迭代精度 for i=1:N

p(i)=1.0/N; %取初始概率为均匀分布 end

for j=1:M %计算q(j) q(j)=0; for i=1:N

q(j)=q(j)+p(i)*p_yx(i,j); end

end

for i=1:N %计算a(i) d(i)=0; for j=1:M

if(p_yx(i,j)==0) d(i)=d(i)+0; else

d(i)=d(i)+p_yx(i,j)*log(p_yx(i,j)/q(j)); end end

a(i)=exp(d(i)); end u=0;

for i=1:N %计算u u=u+p(i)*a(i); end

IL=log2(u); %计算IL

IU=log2(max(a));%计算IU n=1;

while((IU-IL)>=b) %迭代计算 for i=1:N

p(i)=p(i)*a(i)/u; %重新赋值p(i) end

for j=1:M %计算q(j) q(j)=0; for i=1:N

q(j)=q(j)+p(i)*p_yx(i,j); end end

for i=1:N %计算a(i) d(i)=0; for j=1:M

if(p_yx(i,j)==0) d(i)=d(i)+0; else

d(i)=d(i)+p_yx(i,j)*log(p_yx(i,j)/q(j)); end end

a(i)=exp(d(i)); end u=0;

for i=1:N %计算u u=u+p(i)*a(i); end

IL=log2(u); %计算IL IU=log2(max(a));%计算IU n=n+1; end

fprintf('信道矩阵为:\\n'); disp(p_yx);

fprintf('迭代次数n=%d\\n',n);

fprintf('信道容量C=%f比特/符号',IL);

例一的运行结果:

输入信源符号X的个数N=2 输出信源符号Y的个数M=2

五、实验结果

对矩阵

0.690.260.05  进行运算后结果为 : 0.050.70.25

0.690.26而对矩阵  运算发生错误 0.050.7

六、分析讨论

利用迭代算法求信道容量试验中,我们可以看出,当信道矩阵符合概率分布,且其小数表示精度较高时,在判定门限合适的情况下,其计算的信道容量比较符合实际值;当其信道矩阵不符合概率分布,程序报错。或实验数据的小数表示不能满足实验精度要求时,所计算的信道容量将会出现较大误差。

因篇幅问题不能全部显示,请点此查看更多更全内容