信息论实验二:求平均互信息

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

信息论实验二:求英文文本互信息量实验代码:#includestdio.h#includestdlib.h#includemath.hvoidmain(){FILE*fp;fp=fopen(1.txt,r);intl,i=0,j=0;intp[9999];//用于存放字母intb,c,add=0;floatnum[26]={0},space=0;floatt;doubleshang;floatf[26]={0};floatM[27][27]={0},N[27][27]={0};floattotal=0;floatHxy=0;floats[27]={0};if(fp==NULL)inth,k;{printf(文件不存在!\n);exit(0);};while((l=fgetc(fp))!=EOF)//把字符的ASC码存入数组中{p[i++]=l;}for(i=0;p[i]0;i++)//小写字母和大写字母统一(即不区分大小写){if(p[i]=97)p[i]=p[i]-32;}/创建矩阵for(i=0;p[i]0;i++)//创建行{if(p[i]==32){intg=p[i+1];if(g==32){M[0][0]=M[0][0]+1;}else{g=g-64;M[0][g]++;}}}for(i=0;p[i]0;i++)//填满矩阵的其他行{if(p[i]!=32){h=p[i]-64;k=p[i+1];if(k0){if(k==32){k=0;}else{k=k-64;}M[h][k]=M[h][k]+1;}}}//求出连续两个字母出现的总数for(i=0;i27;i++)for(j=0;j27;j++){total=total+M[i][j];}//矩阵复制for(i=0;i27;i++){for(j=0;j27;j++){N[i][j]=M[i][j];}}//求条件for(j=0;j27;j++)for(i=0;i27;i++){s[j]=s[j]+M[i][j];}//求p(xy)for(i=0;i27;i++)for(j=0;j27;j++){M[i][j]=M[i][j]/total;}//求p(x/y)for(j=0;j27;j++)for(i=0;i27;i++){N[i][j]=N[i][j]/s[j];}//输出转移矩阵;printf(转移矩阵为:\n);for(i=0;i4;i++){for(j=0;j4;j++){printf(%f,N[i][j]);}printf(\n);};//求信道疑义度for(i=0;i27;i++)for(j=0;j27;j++){if(N[i][j]!=0){M[i][j]=M[i][j]*log(1/N[i][j]);}}//信道疑义度for(i=0;i27;i++)for(j=0;j27;j++){Hxy=Hxy+M[i][j];}printf(信道损失熵为:\n);printf(%f,Hxy);printf(\n);printf(\n);//计算熵fp=fopen(1.txt,r);if(fp==NULL){printf(该文件不存在!\n);exit(0);};while((c=fgetc(fp))!=EOF){if(c='a'&&c='z')num[c-97]++;elseif(c='A'&&c='Z')num[c-'A']++;if(c==32){space++;};}t=0;shang=0;for(i=0;i=25;i++)t=t+num[i];t+=space;printf(各字母的概率为:\n);for(i=0;i=25;i++){f[i]=num[i]/t;if(f[i]!=0)printf(P(%c)=%f\n,97+i,f[i]);}floatps;printf(space=%f\n,ps=space/t);for(i=0;i=25;i++){if(f[i]!=0)shang=shang-f[i]*log(f[i]);}if(ps!=0)shang-=ps*log(ps);printf(\n信息熵为:\n%f,shang);fclose(fp);printf(\n);floatI;I=shang-Hxy;printf(\n);printf(平均互信息为:\n);printf(%f\n,I);printf(\n);}_________________End_________________

1 / 2
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功