欢迎来到天天文库
浏览记录
ID:57211249
大小:2.46 MB
页数:6页
时间:2020-08-06
《实验一--信道容量的迭代算法.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、信息工程12班吴玉明实验一信道容量的迭代算法一、实验目的1、掌握信道容量的概念。2、了解迭代法计算信道容量的流程。3、熟悉Matlab程序的设计和调试方法。二、实验要求1、学习Matlab软件编程和调试方法;2、输入:任意一个信道转移概率矩阵。包括信源符号个数、信宿符号个数、信道转移概率,在程序运行时从键盘输入;3、输出:输入的信道矩阵、信道容量C。三实验算法程序clc;clearall;N=input('输入信源符号X的个数N=');M=input('输出信源符号Y的个数M=');p_yx=zeros(N,M);%程序设计需要信道矩阵初始化为零fprintf('输入信道矩阵概率'
2、)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.
3、
4、s(i)>=1.)error('不符合概率分布')endendb=input('输入迭代精度:');%输入迭代精度fori=1:Np(i)=1.0/N;%取初始概率为均匀分布endforj=1:M%计算q(j)q(j)=0;fori=1:
5、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=
6、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('信道矩阵为:');disp(p_yx);fpri
7、ntf('迭代次数n=%d',n);fprintf('信道容量C=%f比特/符号',IL);五信道容量迭代算法流程图四.实验的算法:1.初始化信源分布:pi=,循环变量k=1,门限△,C(0)=-;2.3.4.5.若,则k=k+1,转第2步6.输出*=和,终止。五算法流程图如下:否是输入结束六实验截图(一)(二)七实验总结与体会本次试验是建立在迭代的基础上,首先要深刻理解信道容量的迭代算法,其次是,如何将复杂的公式转化为程序通过此次实验,我了解了信道容量的迭代算法的基本知识,学会了如何将复杂的公式如何用程序语言描述出来,掌握了高级语言数值计算过程程序的设计和调试的相关知识,对于将实
8、际问题公式转化为程序的能力有提高
此文档下载收益归作者所有