您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 大学信息论-信道容量的迭代算法
陕西科技大学实验报告班级:XXXX学号:XXXXXXXXX姓名:XXX实验组别:实验日期:报告日期:成绩:报告内容:(目的和要求、原理、步骤、数据、计算、小结等)实验名称:信道容量的迭代算法一、实验目的(1)进一步熟悉信道容量的迭代算法。(2)学习如何将复杂的公式转化为程序。(3)掌握高级语言数值计算程序的设计和调试技术。二、实验要求(1)已知:信源符号个数r、信宿符号个数s、信道转移概率矩阵P。(2)输入:任意的一个信道转移概率矩阵。信源符号个数、信宿符号个数和每个具体的转移概率在运行时从键盘输入。(3)输出:信道容量C。三、实验原理(流程图):1:procedureChannelCapacity(r,s,(jip))2:initialize:信源分布1ipr,相对误差门限,C3:repeat4:1ijiijrijiipppp5:111explogexplogsjiijjirsjiijijppp6:11logexplogrsjiijijCp7:untilCC8:outputC9:endprocedure附页2四、实验数据(源代码):#includestdio.h#includemath.h#defineMAX100doubleCalculate_a(intk,doublepa[]);doubleCalculate_C1(doublepa[],doublea[]);doubleCalculate_C2(doublea[]);intr,s;doublepba[3][3];voidmain(){inti,j;doubleC1,C2,E;doublea[MAX],pa[3];1ijiijrijiipppp11logexplogrsjiijijCpCC输出C1111explogexplogsjiijjirsjiijijppp终止输入:p(ai)是否附页3E=0.000001;r=3;s=3;pa[0]=0.2;pa[1]=0.3;pa[2]=0.5;pba[3][3]={0.5,0.33333333,0.16666666,0.16666666,0.5,0.333333333,0.33333333,0.16666666,0.5};do{for(i=0;ir;i++)a[i]=Calculate_a(i,pa);C1=Calculate_C1(pa,a);C2=Calculate_C2(a);if(C2-C1=E){doublesum=0;for(i=0;ir;i++)sum+=pa[i]*a[i];for(i=0;ir;i++)pa[i]=pa[i]*a[i]/sum;}else{printf(最佳信源概率:\n);for(i=0;ir;i++)printf(%lf\n,pa[i]);}}while(C2-C1=E);printf(信道容量为:%lf\n,C1/log(2));}doubleCalculate_a(intk,doublepa[]){inti,j;doubletemp,sum2=0;for(j=0;js;j++){doublesum1=0;for(i=0;ir;i++){sum1+=pa[i]*pba[i][j];}temp=pba[k][j]/sum1;temp=log(temp);附页4sum2+=pba[k][j]*temp;}returnexp(sum2);}doubleCalculate_C1(doublepa[],doublea[]){inti;doublesum=0;for(i=0;ir;i++)sum+=pa[i]*a[i];returnlog(sum);}doubleCalculate_C2(doublea[]){inti;doublemax=a[0];for(i=0;ir;i++)if(maxa[i])max=a[i];returnlog(max);}五、程序运行结果:最佳信源概率:0.3333300.3333340.333337信道容量为:0.125815Pressanykeytocontinue六、实验小结:通过本次实验,我了解了信道容量的迭代算法,在理论的掌握基础上,更进一步的实现了程序的运行算法,同时又加深了编程语言上的一些不足和毛病.
本文标题:大学信息论-信道容量的迭代算法
链接地址:https://www.777doc.com/doc-2719156 .html