久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2852|回復: 0
打印 上一主題 下一主題
收起左側

(信息論編碼)信道容量迭代算法

[復制鏈接]
跳轉到指定樓層
樓主
ID:105323 發表于 2016-2-23 01:07 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  1. #include <stdio.h>
  2. #include <math.h>
  3. #include <stdlib.h>

  4. void main()
  5. {
  6. register int i,j;
  7. register int k;
  8. int r,s;                     /*信道矩陣的行數和列數*/
  9. float *p=NULL;
  10. float *q=NULL;
  11. float *d=NULL;
  12. float *a=NULL;
  13. float **p_ji=NULL;           /*二維數組p_yx存放信道矩陣*/
  14. float C,u,max,t,IU;         /*C為信道容量*/
  15. printf("the number of input information source:\nr=");   /*輸入行數和列數*/
  16. scanf("%d",&r);
  17. printf("the number of output information source:\ns=");
  18. scanf("%d",&s);

  19. p=(float *)calloc(r,sizeof(float));                   /*初始化需要用到的數組*/
  20. q=(float *)calloc(r,sizeof(float));
  21. d=(float *)calloc(r,sizeof(float));
  22. a=(float *)calloc(r,sizeof(float));
  23. p_ji=(float **)calloc(r,sizeof(float));
  24. for(i=0;i<r;i++)
  25. p_ji[i]=(float *)calloc(r,sizeof(float));


  26. printf("Please matrix of channel:\n");   /*輸入信道矩陣*/
  27. for(i=0;i<r;i++)
  28. {
  29.   for(j=0;j<s;j++)
  30.   {
  31.    printf("p_ji[%d][%d]=",i,j);
  32.        scanf("%f",&p_ji[i][j]);
  33.       }
  34.      printf("\n");
  35. }

  36. for(i=0;i<r;i++)   /*判斷輸入的信道矩陣是否符合概率分布*/
  37. {
  38.      t=0.0;
  39.      for(j=0;j<s;j++)
  40.      t=t+p_ji[i][j];
  41.   if(t<=0.999999||t>=1.000001)
  42.      {
  43.       printf("Error!");
  44.            exit(-1);
  45.        }
  46. }

  47. for(i=0;i<r;i++)                       /*取初始概率為均勻分布*/
  48. p[i]=1.0/r;
  49. for(j=0;j<s;j++)                       /*計算輸出信源概率分布q[j]*/
  50. {
  51.   q[j]=0;
  52.      for (i=0;i<r;i++)
  53.      q[j]=q[j]+p[i]*p_ji[i][j];
  54. }

  55. for(i=0;i<r;i++)   /*計算a[i]*/
  56. {
  57.   d[i]=0;
  58.   for(j=0;j<s;j++)
  59.   {
  60.    if(p_ji[i][j]==0)
  61.    d[i]=d[i]+0;
  62.       else
  63.       d[i]=d[i]+p_ji[i][j]*log(p_ji[i][j]/q[j]);
  64.   }
  65.   a[i]=exp(d[i]);
  66. }

  67. u=0.0;
  68. for(i=0;i<r;i++)   /*計算u*/
  69. u=u+p[i]*a[i];
  70. C=log(u)/log(2.0);   
  71. max=a[0];        
  72. for(i=0;i<r;i++)
  73. {
  74.   if(a[i]>=max)
  75.   max=a[i];
  76. }
  77. IU=log(max)/log(2.0);  /*計算IU*/

  78. k=1;
  79. while((IU-C)>=10e-6)       /*迭代計算*/
  80. {      /*計算最佳輸入分布p[i]*/
  81.   for(i=0;i<r;i++)
  82.        p[i]=p[i]*a[i]/u;
  83.      for(j=0;j<s;j++)     /*計算輸出信源的概率分布q[j]*/
  84.      {
  85.       q[j]=0;
  86.          for (i=0;i<r;i++)
  87.          q[j]=q[j]+p[i]*p_ji[i][j];
  88.      }
  89.      for(i=0;i<r;i++)     /*計算a[i]*/
  90.      {
  91.       d[i]=0;
  92.       for(j=0;j<s;j++)
  93.       {
  94.        if(p_ji[i][j]==0)
  95.         d[i]=d[i]+0;
  96.           else
  97.         d[i]=d[i]+p_ji[i][j]*log(p_ji[i][j]/q[j]);
  98.       }
  99.        a[i]=exp(d[i]);
  100.      }
  101.      u=0.0;
  102.      for(i=0;i<r;i++)        /*計算u*/
  103.         u=u+p[i]*a[i];
  104.      C=log(u)/log(2.0);     /*計算IL*/
  105.        max=a[0];        
  106.      for(i=0;i<r;i++)
  107.      {
  108.       if(a[i]>=max)
  109.    max=a[i];
  110.      }
  111.      IU=log(max)/log(2.0);  /*計算IU*/
  112.   k=k+1;
  113. }


  114. printf("The matrix of channel is:\n"); /*輸出信道矩陣*/
  115. for(i=0;i<r;i++)
  116. {
  117.   for(j=0;j<s;j++)
  118.   printf("%.3f   ",p_ji[i][j]);
  119.      printf("\n");
  120. }
  121. printf("The iteration number is:\nk=%d\n",k);     /*輸出迭代次數*/
  122. printf("The best input probability distribution is:\n");  /*計算輸出信源的概率分布q[j]*/
  123. for(i=0;i<s;i++)
  124. printf("%.3f   ",q[i]);
  125. printf("\nThe capacity of the channel is:\nC=%fbit/symbol\n",C); /*輸出信道容量*/
  126. printf("The best input probability distribution is:\n");     /*輸出最佳輸入分布*/
  127. for(i=0;i<r;i++)
  128. printf("%.3f   ",p[i]);
  129. }
復制代碼


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久综合入口 | 亚洲美女在线一区 | 国产91久久久久蜜臀青青天草二 | 中文字幕av在线 | 涩涩视频在线观看 | 精品粉嫩aⅴ一区二区三区四区 | 欧美国产视频 | 亚洲av毛片| 欧美精品在欧美一区二区少妇 | 中文字幕 亚洲一区 | 久草成人网 | www国产精品 | 亚洲九色| 人人干视频在线 | 艹逼网| 欧美全黄 | 美女视频网站久久 | 欧美一级片在线看 | 黄色一级在线播放 | 久产久精国产品 | 黄色一级免费 | 欧美日韩在线精品 | 99精品99久久久久久宅男 | 日韩在线免费看 | 久久久成人网 | 日韩在线中文字幕 | 午夜影院在线观看 | 亚洲精品乱码久久久久久黑人 | 伊人热久久 | 久在线观看| 久久另类| 精品欧美乱码久久久久久1区2区 | 亚洲国产一区在线 | 国产精品视频入口 | 国产在线精品一区二区 | 亚洲欧美视频 | 香蕉超碰 | 久久久天天 | 国产精品18久久久久久久 | 真人毛片 | 日本精品视频一区二区三区四区 |