信息论与编码实验报告-信道容量的迭代算法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验报告

课程名称:信息论与编码姓名:

系:

专业:

年级:

学号:

指导教师:

职称:

年月日

实验四信道容量的迭代算法

一、 实验目的

1、进一步熟悉信道容量的迭代算法;

2、学习如何将复杂的公式转化为程序;

3、熟悉程序设计语言的数值计算程序和调试技术。

二、实验原理

(1)初始化信源分布()r 21)0(,,,P P P P =(一般初始化为均匀分布),置迭代计数器k=0,设信道容量相对误差门限为δ,δ>0,可设; (2) s i P P P P i k i ij k i ij k ji ,,2,1)

()()(

==∑ϕ (3) r i P P P i j k ji ij j k ji ij k i ,2,1ln exp ln exp )()()1(=⎪⎭

⎪⎬⎫⎪⎩⎪⎨⎧⎥⎦⎤⎢⎣⎡⎥⎦⎤⎢⎣⎡=∑∑∑+ϕϕ (4) ⎪⎭⎪⎬⎫⎪⎩⎪⎨⎧⎥⎦⎤⎢⎣⎡=∑∑+i k ji j ij k P C )()

1(ln exp ln ϕ (5)如果δ≤-++)1()

()1(k k k C C C ,转向(7);

(6)置迭代序号k k →+1,转向(2);

(7)输出)1(+k i P 和)1(+k C 的结果;

(8)停止。

三、实验内容

1、已知:信源符号个数r 、新宿符号个数s 、信道转移概率矩阵P ;

2、输入:任意的一个信道转移概率矩阵,信源符号个数、信宿符号个数和每一个具体的转移概率在运行时从键盘输入;

3、 输出:最佳信源分布P*,信道容量C 。

四、实验环境

Microsoft Windows 7、

Matlab

五、编码程序

文件:

clear;

r=input('输入信源个数:');

s=input('输入信宿个数:');

deta=input('输入信道容量的精度: ');

Q=rand(r,s); %创建m*n随机分布矩阵

A=sum(Q,2);

B=repmat(A,1,s);

disp('信源转移概率矩阵:'),p=Q./B %信源转移概率矩阵i=1:1:r;

q(i)=1/r;

disp('原始信源分布:'),q

c=-10e-8;

C=repmat(q',1,s);

for k=1:1:100000

m=p.*C; %后验概率的分子部分

a=sum(m); %后验概率的分母部分

su1=repmat(a,r,1);

t=m./su1; %后验概率矩阵

D=exp(sum(p.*log(t),2)); %信源分布的分子部分

su2=sum(D); %信源分布的分母部分

q=D/su2; %信源分布

C=repmat(q,1,s);

c(k+1)=log(sum(exp(sum(p.*log(t),2))))/log(2);

kk=abs(c(k+1)-c(k))/c(k+1);

if(kk<=

break;

end

end

disp('最大信道容量时的信源分布:q='),disp(q')

disp('最大信道容量:c='),disp(c(k+1))

六、实验结果结果

1)检验:运行

输入信源的个数:2

输入信宿的个数:3

输入信道容量的精度:

信宿转移概率矩阵:p =

原始信源分布:q =

最佳信源分布:q=

最大信道容量:c=

2)计算信源个数为3,信宿个数为5的信道容量:

运行

输入信源的个数:3

输入信宿的个数:5

输入信道容量的精度:

信宿转移概率矩阵:p =

原始信源分布:q =

最佳信源分布:q =

最大信道容量:c =

七、实验总结

通过实验,我们对信道容量的理解更加深刻了。信道容量是指信道能无错误传送的最大信息率。信道的输入、输出都取值于离散符号集,且都用一个随机变量来表示的信道就是离散单符号信道。由于信道中存在干扰,因此输入符号在传输中将会产生错误,这种信道干扰对传输的影响可用传递概率来描述。为了评价实际信道的利用率,应具体计算已给信道的容量。这是一个求最大值的问题。由于互信息对输入符号概率而言是凸函数,其极值将为最大值,因此这也就是求极值的问题。对于离散信道,P(x)是一组数,满足非负性和归一性等条件,可用拉格朗日乘子法求得条件极值。对于连续信道,P(x)是一函数,须用变分法求条件极值。

实验过程中,我们虽然也遇到了很多困难,但也正是因为如此,我们才能发现自己基础的薄弱点,学的更有方向。对于编程方面,我们也有了很大的提升。

相关文档
最新文档