c语言求信息熵条件熵联合熵.doc

c语言求信息熵条件熵联合熵.doc

ID:55795057

大小:23.00 KB

页数:3页

时间:2020-06-07

c语言求信息熵条件熵联合熵.doc_第1页
c语言求信息熵条件熵联合熵.doc_第2页
c语言求信息熵条件熵联合熵.doc_第3页
资源描述:

《c语言求信息熵条件熵联合熵.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、#include#include#defineu20inti,j,n,m;floatH_X,H_Y,H_XY,H_XpY,Pypx[u][u],Px[u],H_YpX,Py[u],Pxpy[u][u],Pxy[u][u];/*H_X=H(X)平均自信息;H_XY=H(XY)联合熵;H_XpY=H(X

2、Y)、H_YpX=H(Y

3、X)条件熵;Pypx[i][j]=P(y[j]

4、x[i])条件概率;Px[i]=P(x[i])发x[i]的概率;H_XpY=H(Y/X)条件熵;Py[j]=P(y[j])

5、收到y[j]的概率;Pxpy[i][j]=P(x[i]/y[j])条件概率;Pxy[i][j]=P(x[i]y[j])联合概率*//*定义以2为底的对数函数*/floatlog2(floatx){floatz;z=(float)(log(x)/log(2));returnz;}/*求信源熵函数*/floatentropy(float*x,intn){floatz=0;for(i=1;i<=n;i++){z+=(*(x+i))*log2(1/(*(x+i)));}returnz;}/*求联合熵的函数*/floatjoint_en

6、tropy(float(*p)[u]){floatz=0;for(i=1;i<=n;i++)for(j=1;j<=m;j++){z+=*(p[i]+j)*log2(1/(*(p[i]+j)));}returnz;}main(){floats=0;printf("pleaseinputthedimensionof'X'and'Y'");scanf("%d%d",&n,&m);printf("ThedimensionofXisn=%dThedimensionofYism=%dPleaseinputthecond

7、itionprobability:P(y[j]/x[i]),",n,m);printf("(afteryouinputonenumberpleaseclickthe'enter')");/*条件概率P(y[j]/x[i])赋值*/for(i=1;i<=n;i++){for(j=1;j<=m;j++){printf("P(y[%d]/x[%d])=",j,i);scanf("%f",&Pypx[i][j]);}}printf("pleaseinputP(x[i]):(afteryouinputonenumberpleasec

8、lickthe'enter')");for(i=1;i<=n;i++){printf("P(x[%d])=",i);scanf("%f",&Px[i]);}/*判断输入X的概率是否正确,不正确则退出程序*/for(i=1;i<=n;i++){if((Px[i]<0)

9、

10、(Px[i]>1)){printf("Pleaseinputrightvalueofprobability");gotoEnd_exe;}s+=Px[i];}if((s-1)*(s-1)>0.001){printf("Pleaseinputtherigh

11、tvalueofprobability");gotoEnd_exe;}for(i=1;i<=n;i++){s=0;for(j=1;j<=m;j++){s+=Pypx[i][j];}if((s-1)*(s-1)>0.001){printf("Pleaseinputtherightvalueofprobability");gotoEnd_exe;}}/*计算Py[j]=P(y[j])收到y[j]的概率;Pxpy[i][j]=P(x[i]/y[j])条件概率;Pxy[i][j]=P(x[i]y[j])联合概率*/for(i=

12、1;i<=n;i++){for(j=1;j<=m;j++){Pxy[i][j]=Pypx[i][j]*Px[i];printf("Px[%d]y[%d]=%f",i,j,Pxy[i][j]);}}for(j=1;j<=m;j++){s=0;for(i=1;i<=n;i++)s+=Pxy[i][j];Py[j]=s;printf("P(y[%d])=%f",j,Py[j]);}for(i=1;i<=n;i++){for(j=1;j<=m;j++){Pxpy[i][j]=Pxy[i][j]/Py[j];printf("P(

13、x[%d]/y[%d])=%f",i,j,Pxpy[i][j]);}}/*结束计算Py[j]=P(y[j])收到y[j]的概率;Pxpy[i][j]=P(x[i]/y[j])条件概率;Pxy[i][j]=P(x[i]y[j])联合概率*//*输出信源熵*/H_X=entr

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。