信道容量的计算

实验一: 信道容量的计算

一、实验目的

(1) 进一步熟悉信道容量的迭代算法。

(2) 学习如何将复杂的公式转化为程序。

(3) 掌握高级语言数值计算程序的设计和调试技术。

二、实验原理:

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

三、实验步骤

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

r

(k)

2. φ(k)pji

ij=pi

∑r

p(k)

ipji

i=1

s

exp[k)

jilogφ(

ij]

3. p(k+1)∑p

i=j=1

∑rs

exp[∑pk)

jilogφ(

ij]

i=1j=1

)rs

4. 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)

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)=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⎣⎦

六、分析讨论

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

实验一: 信道容量的计算

一、实验目的

(1) 进一步熟悉信道容量的迭代算法。

(2) 学习如何将复杂的公式转化为程序。

(3) 掌握高级语言数值计算程序的设计和调试技术。

二、实验原理:

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

三、实验步骤

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

r

(k)

2. φ(k)pji

ij=pi

∑r

p(k)

ipji

i=1

s

exp[k)

jilogφ(

ij]

3. p(k+1)∑p

i=j=1

∑rs

exp[∑pk)

jilogφ(

ij]

i=1j=1

)rs

4. 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)

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)=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⎣⎦

六、分析讨论

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


相关内容

  • 4.信道及其容量
  • 第4章 离散信道及其容量 4.1节 离散无记忆信道(DMC, Discrete Memoryless Channel) 什么是 "信道"? 通信的基本目标是将信源发出的消息有效.可靠地通过"信道"传输到目的地,即信宿(sink ).但什么是"信道&q ...

  • 信息论基础
  • <信息论基础>课程教学大纲 课程编号:(0531305) 课程名称:信息论基础 参考学时:48 其中实验或上机学时:0 先修课及后续课:先修课:概率论.信号与系统 后续课:通信原理.数字图像处理.语音信号处理 说明部分 1.课程性质 本课程是电子信息类专业的技术基础课 2.课程教学的目的 ...

  • 信道容量及其一般计算方法
  • 实验一 信道容量及其一般计算方法 1. 实验目的 一般离散信道容量的迭代运算 2. 实验要求 (1)理解和掌握信道容量的概念和物理意义 (2)理解一般离散信道容量的迭代算法 (3)采用Matlab编程实现迭代算法 (4)认真填写实验报告. 3.源代码 clc;clear all; //清屏 N = ...

  • 信息论与编码实验二
  • 实验二 离散信道及其容量 一.实验目的 1. 2. 3. 理解离散信道容量的内涵: 掌握求二元对称信道(BSC )互信息量和容量的设计方法: 掌握二元扩展信道的设计方法并会求其平均互信息量. 二.实验原理 若某信道输入的是N 维序列x ,其概率分布为q(x),输出是N 维序列y, 则平均互信息量记为 ...

  • 信息论基础与编码课后题答案(第三章)
  • 3-1 设有一离散无记忆信源,其概率空间为 Xx1x2 ,信源发出符号通过 P(x)0.60.4 16 ,求: 34 56 一干扰信道,接收符号为Y{y1,y2},信道传递矩阵为P 14 (1) 信源X中事件x1和x2分别含有的自信息量: (2) ...

  • 信息论与编码试题集与答案(新)
  • 一填空题(本题20分,每小题2分) 1.平均自信息为 表示信源的平均不确定度,也表示平均每个信源消息所提供的信息量. 平均互信息 后整个系统不确定性减少的量. 表示从Y获得的关于每个X的平均信息量,也表示发X前后Y的平均不确定性减少的量,还表示通信前 2.最大离散熵定理为:离散无记忆信源,等概率分布 ...

  • 信息论试题5
  • 一.填空题(共25分,每空1分) 1.连续信源的绝对熵为 . 2.离散无记忆信源在进行无失真变长信源编码时,编码效率最大可以达 到 . 3.无记忆信源是指 . 4.离散无记忆信源在进行无失真变长信源编码时,码字长度是变化的.根据信源符号 的统计特性,对概率大的符号用 码,对概率小的符号用 码,这样平 ...

  • 香农定律和奈奎斯特准则
  • 香农定律和奈奎斯特准则 (1)信道容量与香农定理(Shannon Theroy) 我们常常会遇到这样的问题:我的信道上到底可以传输多大的数据,或者指定的信道上的极限传输率是多少.这就是信道容量的问题.例如在xDSL 系统中,我们使用的传输介质是仅有几兆带宽的电话线,而上面要传送几兆.十几兆甚至几十兆 ...

  • 彭代渊王玲-信息论与编码理论-第三章习题解答
  • 第3章 信道容量 2/31/3 3-1 设二进制对称信道的转移概率矩阵为 1/32/3 解: (1) 若P(a1)3/4,P(a2)1/4,求H(X),H(Y),H(X|Y),H(Y|X和) I(X;Y). 3311 H(X)=p(ai)log p(ai)log()log ...