网站大量收购独家精品文档,联系QQ:2885784924

信息论实验信息熵函数的计算.doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
信息论实验信息熵函数的计算

信息熵函数的计算 一. 实验目的 任选C语言,C++,或MATLAB等一种语言编写程序,计算信息熵、条件熵、联合熵,并通过1~2个运行的结果,验证程序的正确性。 通过编程实现信息论的一些基本计算,熟悉和理解信息论基本概念。 二. 实验内容 编写程序实现: 输入:信源分布,信道转移概率矩阵 其中; 输出:信源熵,条件熵,联合熵。 三. 实验方案或步骤(程序设计说明) 实验选用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) } } 五.程序运行 wilyes11收集 博客(与学习无关):/u/1810231802

文档评论(0)

zhuliyan1314 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档