信息熵函数的计算.docVIP

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
信息熵函数的计算

2014—2015 学年第 1 学期 合肥学院数理系 实验报告 ,信道转移概率矩阵其中; 输出:信源熵,条件熵,联合熵。 三. 实验方案或步骤(程序设计说明) 实验选用C语言编程,用一维数组存储信源分布数据,二维数组存储信道转移概率矩阵。利用循环(嵌套)语句计算以下公式并输出需要的结果: , , 四. 实验程序(经调试正确的源程序#include stdio.h #include stdlib.h #include math.h #define M 20 //最大行数 #define N 20 //最大列数 /*求以2为底x为顶的对数*/ float log2(float x) { return log(x)/log(2);}//log2(x) /*主函数*/ void main() { int m,n,i,j; float H_X,H_X_Y,H_Y_X,H_XY;//H(X),H(X|Y),H(Y|X),H(XY) float P_X_Y,P_Y_X,P_XY;//P(X|Y),P(Y|X),P(XY) float P_X[M],P_Y[N],matrix[M][N];//信源分布P(X),P(Y),信道转移概率矩阵 while(1) { printf(\n请输入信源分布的元素个数 m:); scanf(%d,m); printf(\n输入信源分布:); for(i=0;im;i++) scanf(%f,P_X[i]); printf(\n输入的信源分布为:); for(i=0;im;i++) printf(%10f,P_X[i]); printf(\n\n请输入信道转移概率矩阵列数 n:); scanf(%d,n); printf(\n请按行序输入矩阵元素:); for(i=0;im;i++) for(j=0;jn;j++) scanf(%f,matrix[i][j]); printf(\n输入的矩阵为:); for(i=0;im;i++) { printf(\n); for(j=0;jn;j++) printf(%10f,matrix[i][j]);} //信息熵H(X) H_X=0; for(i=0;im;i++) H_X=H_X-P_X[i]*log2(P_X[i]); printf(\n\n信息熵H(X)=%f,H_X);//信息熵H(X) //条件熵H(X|Y) H_X_Y=0; for(j=0;jn;j++)//求P(Y) { P_Y[j]=0; for(i=0;im;i++) { P_Y_X=matrix[i][j]; P_XY=P_Y_X*P_X[i]; P_Y[j]=P_Y[j]+P_XY;} } for(i=0;im;i++)//求H(X|Y) { for(j=0;jn;j++) { P_Y_X=matrix[i][j]; P_XY=P_Y_X*P_X[i]; P_X_Y=P_XY/P_Y[j]; H_X_Y=H_X_Y-P_XY*log2(P_X_Y);} } printf(\n\n条件熵H(X|Y)=%f,H_X_Y);//条件熵H(X|Y) //条件熵H(Y|X) H_Y_X=0; for(i=0;im;i++) { for(j=0;jn;j++) { P_Y_X=matrix[i][j]; P_XY=P_Y_X*P_X[i]; H_Y_X=H_Y_X-P_XY*log2(P_Y_X);} } printf(\n\n条件熵H(Y|X)=%f,H_Y_X);//条件熵H(Y|X) //联合熵H(XY) H_XY=H_X+H_Y_X; printf(\n\n联合熵H(XY)=%f,H_XY);//联合熵H(XY) } } 五.程序运行 六.实验总结及心得体会 本次实验我使用的是C语言编程没有清晰的数学思维和对概念的了解,大体思想是利用数组存储数据,然后将数学公式转化为程序语言运算并输出。程序难度虽然不大,但是难以理清程序中的变量和下标的。因此实验过程中我体会到了数学在编程中的重要性,同时加深了对“信息熵”概念的理解。 七.教师评语 教师签名: 年 月 日

文档评论(0)

kaiss + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档