找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1991|回复: 0
打印 上一主题 下一主题
收起左侧

统计信源熵C程序

[复制链接]
跳转到指定楼层
楼主
ID:206798 发表于 2017-6-1 17:37 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
  1. 统计信源熵程序:
  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. }
复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表