欢迎来到天天文库
浏览记录
ID:18634593
大小:324.00 KB
页数:15页
时间:2018-09-20
《实验1道容量的迭代算法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、《信息论基础实验》指导老师:贺正芸班级:信息工程081姓名:卢慈荣学号:08401400103湖南工业大学电气与信息工程学院实验一信道容量的迭代算法程序设计一、实验目的(1)进一步熟悉信道容量的迭代算法;(2)学习如何将复杂的公式转化为程序;(3)掌握C语言数值计算程序的设计和调试技术。二、实验要求(1)已知:信源符号个数r、信宿符号个数s、信道转移概率矩阵P。(2)输入:任意的一个信道转移概率矩阵。信源符号个数、信宿符号个数和每个具体的转移概率在运行时从键盘输入。(3)输出:最佳信源分布P*,信道容量C。三、信道容量迭代算法
2、1:procedureCHANNELCAPACITY(r,s,())2:initialize:信源分布=1/r,相对误差门限,C=—3:repeat4:5:6:Cß7:until8:outputP*=,C9:endprocedure-------------------------------------------------------------------------------------------------------四、实验代码/*问题:1 初始最大容量的设定2 exp的精确求解*/#include3、o.h>#include#include#include#include#defineR1000#defineS1000#definedelta1e-2#defineinf1e6usingnamespacestd;doubleP_i[R],P_ji[S][R],Thi_ij[R][S];doublePre_C,Now_C;intr,s,Num;double__log2(doublea){returnlog(a)/log(2);}double__exp(4、doublea){returnpow(2.718281828459045,a);}inteps(doublea){if(a>delta5、6、a<-delta)return1;return0;}voidscan(){inti,j,k;intflag=0;doublet;freopen("信道信息.txt","r",stdin);printf("本次信道信息如下:(若要更改信道信息,请终止程序运行后,改变文件信道信息.txt中的信息)");printf("信源处信息的个数:");scanf("%d",&r);printf("%d7、",r);printf("信道接收处信息的种类:");scanf("%d",&s);printf("%d",s);printf("信道的分配(每一行表示信源处的一个信息对接收端一处信息的概率分布):");for(i=0;i8、j++)printf("%lf",P_ji[j][i]);printf("");}if(flag)printf("信道数据有误!");}voidprint(){inti,j,k;printf("tt运行结果最大的信息容量是:%lf.",Now_C);printf("迭代次数是%d.",Num);printf("信源信息概率分布为:");for(i=0;i9、表示接收端一种信息的来源概率分布):");for(j=0;j10、j][i];if(fabs(P_j)>=delta)for(i=0;i
3、o.h>#include#include#include#include#defineR1000#defineS1000#definedelta1e-2#defineinf1e6usingnamespacestd;doubleP_i[R],P_ji[S][R],Thi_ij[R][S];doublePre_C,Now_C;intr,s,Num;double__log2(doublea){returnlog(a)/log(2);}double__exp(
4、doublea){returnpow(2.718281828459045,a);}inteps(doublea){if(a>delta
5、
6、a<-delta)return1;return0;}voidscan(){inti,j,k;intflag=0;doublet;freopen("信道信息.txt","r",stdin);printf("本次信道信息如下:(若要更改信道信息,请终止程序运行后,改变文件信道信息.txt中的信息)");printf("信源处信息的个数:");scanf("%d",&r);printf("%d
7、",r);printf("信道接收处信息的种类:");scanf("%d",&s);printf("%d",s);printf("信道的分配(每一行表示信源处的一个信息对接收端一处信息的概率分布):");for(i=0;i8、j++)printf("%lf",P_ji[j][i]);printf("");}if(flag)printf("信道数据有误!");}voidprint(){inti,j,k;printf("tt运行结果最大的信息容量是:%lf.",Now_C);printf("迭代次数是%d.",Num);printf("信源信息概率分布为:");for(i=0;i9、表示接收端一种信息的来源概率分布):");for(j=0;j10、j][i];if(fabs(P_j)>=delta)for(i=0;i
8、j++)printf("%lf",P_ji[j][i]);printf("");}if(flag)printf("信道数据有误!");}voidprint(){inti,j,k;printf("tt运行结果最大的信息容量是:%lf.",Now_C);printf("迭代次数是%d.",Num);printf("信源信息概率分布为:");for(i=0;i9、表示接收端一种信息的来源概率分布):");for(j=0;j10、j][i];if(fabs(P_j)>=delta)for(i=0;i
9、表示接收端一种信息的来源概率分布):");for(j=0;j
10、j][i];if(fabs(P_j)>=delta)for(i=0;i
此文档下载收益归作者所有