找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2245|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

統(tǒng)計(jì)信源熵C程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:206798 發(fā)表于 2017-6-1 17:37 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
  1. 統(tǒng)計(jì)信源熵程序:
  2. #include<math.h>
  3. #include<stdio.h>
  4. void main()
  5. {
  6. int ch[50]={0};
  7. int sum=0,n=0;
  8. int i;
  9. double p[50]={0};
  10. double H=0;
  11. char c;
  12. printf("please input an essay:\n");

  13. while((c=getchar())!='\n')
  14. {
  15. for(i=65;i<=90;i++)
  16.      {
  17.        if(i==c)
  18.        {
  19.    ch[i-65]++;
  20.    sum++;
  21.        }

  22.     }
  23.     for(i=97;i<=112;i++)
  24.      {
  25.              if(c==i)
  26.              {
  27.               ch[i-65]++;
  28.               sum++;
  29.              }
  30.      }
  31. }
  32. for(i=0;i<50;i++)
  33. {
  34.    p[ i]=(double)ch[ i]/(double)sum;
  35.    if(p[ i]!=0)
  36.    {
  37.            printf("p(%c)=%1.2f",i+65,p[ i]);
  38.            n++;
  39.    }
  40.    if(n==3)
  41.    {
  42.            printf("\n");

  43.            n=0;
  44.    }
  45. }
  46. for(i=0;i<=25;i++)
  47. {
  48. if(p[ i]!=0)
  49. H=H+p[ i]*(log(p[ i]));

  50. }
  51. printf("\n");
  52. printf("信息熵=%f",-H);
  53. printf("\n");
  54. }
復(fù)制代碼


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

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表