您好,欢迎访问三七文档
实验一:信道容量的计算一、实验目的(1)进一步熟悉信道容量的迭代算法。(2)学习如何将复杂的公式转化为程序。(3)掌握高级语言数值计算程序的设计和调试技术。二、实验原理:迭代算法计算信道容量的原理如图所示:三、实验步骤1.初始化信源分布:pi=r1,循环变量k=1,门限△,C(0)=-;否是iiiiijiijiijijiannCaxpnnCxypxpxypxypamaxln,1)(ln,1)/()()/(ln)/(exp21nnCnnC,1,121nnCC,11iiiiiiaxpaxpxp)()()(输入)()()0(iixpxp结束2.rijikijikikijpppp1)()()(3.risjkijjisjkijjikippp11)(1)()1(]logexp[]logexp[4.])logexp(log[11)()1(risjkijjikpC5.若)1()()1(kkkCCC,则k=k+1,转第2步6.输出P*=rkiP1和1kC,终止。7.。分别对两个矩阵05.069.025.026.07.005.005.069.07.026.0进行计算比较结果四、实验程序clc;clearall;N=input('输入信源符号X的个数N=');M=input('输出信源符号Y的个数M=');p_yx=zeros(N,M);%程序设计需要信道矩阵初始化为零fprintf('输入信道矩阵概率\n')fori=1:Nforj=1:Mp_yx(i,j)=input('p_yx=');%输入信道矩阵概率ifp_yx(i)0error('不符合概率分布')endendendfori=1:N%各行概率累加求和s(i)=0;forj=1:Ms(i)=s(i)+p_yx(i,j);endendfori=1:N%判断是否符合概率分布if(s(i)=0.999999||s(i)=1.000001)error('不符合概率分布')endendb=input('输入迭代精度:');%输入迭代精度fori=1:Np(i)=1.0/N;%取初始概率为均匀分布endforj=1:M%计算q(j)q(j)=0;fori=1:Nq(j)=q(j)+p(i)*p_yx(i,j);endendfori=1:N%计算a(i)d(i)=0;forj=1:Mif(p_yx(i,j)==0)d(i)=d(i)+0;elsed(i)=d(i)+p_yx(i,j)*log(p_yx(i,j)/q(j));endenda(i)=exp(d(i));endu=0;fori=1:N%计算uu=u+p(i)*a(i);endIL=log2(u);%计算ILIU=log2(max(a));%计算IUn=1;while((IU-IL)=b)%迭代计算fori=1:Np(i)=p(i)*a(i)/u;%重新赋值p(i)endforj=1:M%计算q(j)q(j)=0;fori=1:Nq(j)=q(j)+p(i)*p_yx(i,j);endendfori=1:N%计算a(i)d(i)=0;forj=1:Mif(p_yx(i,j)==0)d(i)=d(i)+0;elsed(i)=d(i)+p_yx(i,j)*log(p_yx(i,j)/q(j));endenda(i)=exp(d(i));endu=0;fori=1:N%计算uu=u+p(i)*a(i);endIL=log2(u);%计算ILIU=log2(max(a));%计算IUn=n+1;endfprintf('信道矩阵为:\n');disp(p_yx);fprintf('迭代次数n=%d\n',n);fprintf('信道容量C=%f比特/符号',IL);例一的运行结果:输入信源符号X的个数N=2输出信源符号Y的个数M=2五、实验结果对矩阵05.069.025.026.07.005.0进行运算后结果为:而对矩阵05.069.07.026.0运算发生错误六、分析讨论利用迭代算法求信道容量试验中,我们可以看出,当信道矩阵符合概率分布,且其小数表示精度较高时,在判定门限合适的情况下,其计算的信道容量比较符合实际值;当其信道矩阵不符合概率分布,程序报错。或实验数据的小数表示不能满足实验精度要求时,所计算的信道容量将会出现较大误差。
本文标题:信道容量的计算
链接地址:https://www.777doc.com/doc-2714995 .html