estentropy.cpp

来自「贝叶斯(Bayesion)机器学习相互信息。用于求取熵、联合熵等。改进后可用于随」· C++ 代码 · 共 54 行

CPP
54
字号
//=========================================================////This is a prog in the MutualInfo 0.9 package written by// Hanchuan Peng.////Disclaimer: The author of program is Hanchuan Peng//      at <penghanchuan@yahoo.com> and <phc@cbmv.jhu.edu>.////The CopyRight is reserved by the author.////Last modification: April/19/2002////========================================================////calculate the entropy of a scalar variable //by Hanchuan Peng//April/2002#include "miinclude.h"void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]){  if(nrhs!=1)    mexErrMsgTxt("Usage [entropy] = progname(marginprob). .");  if(nlhs > 1)    mexErrMsgTxt("Too many output argument <entropy>.");  double *pa = mxGetPr(prhs[0]);  long totaln = (long)mxGetM(prhs[0])*mxGetN(prhs[0]);  double sum = 0.0;  double entropy = 0.0;  for (long i=0;i<totaln;i++)  {    double curp = pa[i];    if (curp<0) {printf("Negative Probability!! Wrong data.\n");}    sum += curp;    if (curp!=0) {entropy -= curp*log(curp);}  }  if (sum-1>1e-10)  {    printf("Dubious data! Sum is not 1.\n");  }  entropy /= log(2);  plhs[0] = mxCreateDoubleMatrix(1,1, mxREAL);  *mxGetPr(plhs[0]) = entropy;  return;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?