1实验报告课程名称:信息论与编码姓名:系:专业:年级:学号:指导教师:职称:年月日2实验四信道容量的迭代算法一、实验目的1、进一步熟悉信道容量的迭代算法;2、学习如何将复杂的公式转化为程序;3、熟悉程序设计语言的数值计算程序和调试技术。二、实验原理(1)初始化信源分布r21)0(,,,PPPP(一般初始化为均匀分布),置迭代计数器k=0,设信道容量相对误差门限为,0,可设;(2)siPPPPikiijkiijkji,,2,1)()()((3)riPPPijkjiijjkjiijki,2,1lnexplnexp)()()1((4)ikjijijkPC)()1(lnexpln(5)如果)1()()1(kkkCCC,转向(7);(6)置迭代序号kk1,转向(2);(7)输出)1(kiP和)1(kC的结果;(8)停止。三、实验内容1、已知:信源符号个数r、新宿符号个数s、信道转移概率矩阵P;2、输入:任意的一个信道转移概率矩阵,信源符号个数、信宿符号个数和每一个具体的转移概率在运行时从键盘输入;3、输出:最佳信源分布P*,信道容量C。四、实验环境MicrosoftWindows7、Matlab6.53五、编码程序aa.m文件: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('原始信源分布:'),qc=-10e-8;C=repmat(q',1,s);fork=1:1:100000m=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=0.000001)break;endenddisp('最大信道容量时的信源分布:q='),disp(q')disp('最大信道容量:c='),disp(c(k+1))六、实验结果结果1)检验:运行aa.m输入信源的个数:2输入信宿的个数:3输入信道容量的精度:0.000001信宿转移概率矩阵:p=0.50000.30000.20000.30000.50000.2000原始信源分布:q=0.50000.50004最佳信源分布:q=0.50000.5000最大信道容量:c=0.03652)计算信源个数为3,信宿个数为5的信道容量:运行aa.m输入信源的个数:3输入信宿的个数:5输入信道容量的精度:0.000001信宿转移概率矩阵:p=0.04840.13850.30580.28450.22270.21040.24710.10770.37620.05850.34300.08000.18080.34280.0534原始信源分布:q=0.33330.33330.3333最佳信源分布:q=0.46910.17940.3515最大信道容量:c=0.1559七、实验总结通过实验,我们对信道容量的理解更加深刻了。信道容量是指信道能无错误传送的最大信息率。信道的输入、输出都取值于离散符号集,且都用一个随机变量来表示的信道就是离散单符号信道。由于信道中存在干扰,因此输入符号在传输中将会产生错误,这种信道干扰对传输的影响可用传递概率来描述。为了评价实际信道的利用率,应具体计算已给信道的容量。这是一个求最大值的问题。由于互信息对输入符号概率而言是凸函数,其极值将为最大值,因此这也就是求极值的问题。对于离散信道,P(x)是一组数,满足非负性和归一性等条件,可用拉格朗日乘子法求得条件极值。对于连续信道,P(x)是一函数,须用变分法求条件极值。实验过程中,我们虽然也遇到了很多困难,但也正是因为如此,我们才能发现自己基础的薄弱点,学的更有方向。对于编程方面,我们也有了很大的提升。