1、信计 082 0810820221 马敏玉 信道容量编码源程序#include #include #include void main()register int i,j;register int k;int r,s; /*信道矩阵的行数和列数*/float *p=NULL;float *q=NULL;float *d=NULL;float *a=NULL;float *p_ji=NULL; /*二维数组 p_yx 存放信道矩阵*/float C,u,max,t,IU; /*C 为信道容量*/printf(“the number of input information source:nr=“
2、); /*输入行数和列数*/scanf(“%d“,printf(“the number of output information source:ns=“);scanf(“%d“,p=(float *)calloc(r,sizeof(float); /*初始化需要用到的数组*/q=(float *)calloc(r,sizeof(float);d=(float *)calloc(r,sizeof(float);a=(float *)calloc(r,sizeof(float);p_ji=(float *)calloc(r,sizeof(float);for(i=0;i=1.000001) pr
3、intf(“Error!“);exit(-1);for(i=0;i=max)max=ai;IU=log(max)/log(2.0); /*计算 IU*/k=1;while(IU-C)=10e-6) /*迭代计算*/ /*计算最佳输入分布 pi*/for(i=0;i=max)max=ai;IU=log(max)/log(2.0); /*计算 IU*/k=k+1;printf(“The matrix of channel is:n“); /*输出信道矩阵*/for(i=0;ir;i+)for(j=0;js;j+)printf(“%.3f “,p_jiij);printf(“n“);printf(“
4、The iteration number is:nk=%dn“,k); /*输出迭代次数*/printf(“The best input probability distribution is:n“); /*计算输出信源的概率分布 qj*/for(i=0;is;i+)printf(“%.3f “,qi);printf(“nThe capacity of the channel is:nC=%fbit/symboln“,C); /*输出信道容量*/printf(“The best input probability distribution is:n“); /*输出最佳输入分布*/for(i=0;ir;i+)printf(“%.3f “,pi);