当前位置:文档之家› 实验二---一般信道容量迭代算法.doc

实验二---一般信道容量迭代算法.doc

实验二---一般信道容量迭代算法.doc
实验二---一般信道容量迭代算法.doc

实验二 一般信道容量迭代算法

1. 实验目的

掌握一般离散信道的迭代运算方法。

2. 实验要求

1) 理解和掌握信道容量的概念和物理意义

2) 理解一般离散信道容量的迭代算法

3) 采用Matlab 编程实现迭代算法

4) 认真填写试验报告

3.算法步骤

①初始化信源分布),,,,,(21)0(p p p p P r

i ????=(一般初始化为均匀分布) ,置迭代计数器k=0 ,设信道容量相对误差门限为δ ,δ>0 ,可设-∞=C )0(; ②∑=i k i ij k i ij k ji p p p p )()

()

(? s j r i ,??=??=,1;,,1 ③∑∑∑??

????????????????????=+i k ji j ij k ji j ij k i p p p ??)()()1(ln exp ln exp r i ,,1??= ④??

??????????????=∑∑+i

k ji j ij k p C ?)()1(ln exp ln ⑤如果δ≤-++C C C

k k k )1()()1( ,转向⑦; ⑥置迭代序号k k →+1,转向②; ⑦输出p k i )

1(+和C k )(1+的结果;

⑧停止。

4.代码P=input('转移概率矩阵P=')

e=input('迭代精度e=')

[r,s]=size(P);

n=0;

C=0;

C_k=0;

C_k1=0;

X=ones(1,r)/r;

A=zeros(1,r);

B=zeros(r,s);%初始化各变量

while(1)

n=n+1;

for i=1:r

for j=1:s

B(i,j)=log(P(i,j)/(X*P(:,j))+eps);

if P(i,j)==0

B(i,j)=0;

else

end

end

A(1,i)=exp(P(i,:)*B(i,:)');

end

C_k=log2(X*A');

C_k1=log2(max(A));

if (abs(C_0-C_1)

fprintf('信道容量:C=\n',C)

disp('最佳分布P(x)=');disp(X);

break; else %不满足则继续迭代

X=(X.*A)/(X*A');

continue;

end

end

5.计算下列信道的信道容量

例一:

0.980.02 0.050.95??????

P =

0.9800 0.0200

0.0500 0.950

e =

1.0000e-005

迭代次数: n=5

信道容量: C=0.785847比特/符号最佳分布P(x)=

0.5129 0.4871

例二:

0.60.4 0.010.99??????

P =

0.6000 0.4000

0.0100 0.9900

e =

1.0000e-005

迭代次数: n=17

信道容量: C=0.368768比特/符号最佳分布P(x)=

0.4238 0.5762

例三:

0.790.160.05 0.050.150.8??????

P =

0.7900 0.1600 0.0500

0.0500 0.1500 0.8000

e =1.0000e-005

迭代次数: n=6

信道容量: C=0.571215比特/符号

最佳分布P(x)=

0.5009 0.4991

.思考题:

迭代精度指的是什么?它对计算结果的影响?

迭代精度小数点的位数与迭代次数相同,迭代精度越小,信道容量越大。

相关主题
文本预览
相关文档 最新文档