您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > matlab-信道容量的迭代计算
《信息论基础》课程实验报告(四)班级:计算072班姓名:白梅学号:20071189实验内容:信道容量的迭代计算。实验要求:1.输入一个信道矩阵;2.输出下列内容:(1)最佳输入概率分布;(2)信道容量;(3)迭代次数;(4)输入符号的个数;(5)输出符号的个数;(6)迭代计算精度;3.实验报告中要包括源代码和输入、输出结果。实验源程序如下:function[CC,Paa]=ChannelCap(P,k)if(length(find(P0))~=0)error('Notaprob.vector,negativecomponent,不是概率分布');endif(abs(sum(P')-1)10e-10)error('Notaprob.vector,componentdonotaddupto1。不是概率分布');end[r,s]=size(P);Pa=(1/(r+eps))*ones(1,r);sumrow=zeros(1,r);Pba=P;n=0;C=0;CC=1;whileabs(CC-C)=kn=n+1;Pb=zeros(1,s);forj=1:sfori=1:rPb(j)=Pb(j)+Pa(i)*Pba(i,j);endendsuma=zeros(1,s);forj=1:sfori=1:rPab(j,i)=Pa(i)*Pba(i,j)/(Pb(j)+eps);suma(j)=suma(j)+Pa(i)*Pba(i,j)*log2((Pab(j,i)+eps)/(Pa(i)+eps));endendC=sum(suma);L=zeros(1,r);sumaa=0;fori=1:rforj=1:sL(i)=L(i)+Pba(i,j)*log(Pab(j,i)+eps);enda(i)=exp(L(i));endsumaa=sum(a);fori=1:rPaa(i)=a(i)/(sumaa+eps);endCC=log2(sumaa);Pa=Paa;s0='很好!输入正确,迭代结果如下:';s1='最佳输入概率分布Pa:';s2='信道容量C:';s3='迭代次数n:';s4='输入符号数r:';s5='输出符号数s:';s6='迭代计算精度k:';fori=1:rB{i}=i;endenddisp(s0);disp(s1),disp(B),disp(Paa);disp(s4),disp(r);disp(s5),disp(s);disp(s2),disp(CC);disp(s6),disp(k);disp(s3),disp(n);设置k=0.00001k=0.00001k=1.0000e-005输入信道矩阵P:P=[1/21/20;0.20.30.5]P=0.50000.500000.20000.30000.5000得到输出结果:ChannelCap(P,k)很好!输入正确,迭代结果如下:最佳输入概率分布Pa:[1][2]0.59490.4051输入符号数r:2输出符号数s:3信道容量C:0.3263迭代计算精度k:1.0000e-005迭代次数n:8ans=0.3263
本文标题:matlab-信道容量的迭代计算
链接地址:https://www.777doc.com/doc-5719283 .html