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

1 / 3
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功