易截截图软件、单文件、免安装、纯绿色、仅160KB

用c编写求信息论中各种熵和信息量的程序

#include<stdio.h>
#include<math.h>
#define u 20
int i,j,n,m;
float Ix[u],I[u][u],H_X,H_Y,H_XY,I_XY,H_XpY,Pypx[u][u],Px[u],H_YpX,Py[u],Pxpy[u][u],Pxy[u][u];
/*定义的Ix[]=I(x[i])自信息;I[][]=I(x[i];y[j])互信息;H_X=H(X)平均自信息;H_XY=H(XY)联合熵;
I_XY=I(X;Y)平均互信息;H_XpY=H(X|Y)、H_YpX=H(Y|X)条件熵;Pypx[i][j]=P(y[j]|x[i])条件概率;
Px[i]=P(x[i])发x[i]的概率;H_XpY=H(Y/X)条件熵;Py[j]=P(y[j])收到y[j]的概率;Pxpy[i][j]=P(x[i]/y[j])条件概率;
Pxy[i][j]=P(x[i]y[j])联合概率*/
/*定义以2为底的对数函数*/
float log2(float x)
{
 float z;
 z=(float)(log(x)/log(2));
 return z;
}
/*求自信息的函数*/
float self_inf(float x)
{
  float z;
  z=-log2(x);
  return z;
}
/*求互信息的函数*/
float mut_inf(int x,int y)
{
 float z;
 z=log2(Pxpy[x][y]/Px[x]);
 return z;
}
/*求平均自信息的函数*/
float entropy(float *x,int n)
{
  float z=0;
  for(i=1;i<=n;i++)
  {
   z+=(*(x+i))*log2(1/(*(x+i)));
  }
  return z;
}
/*求联合熵的函数*/
float joint_entropy(float (*p)[u])
{
 float z=0;
 for(i=1;i<=n;i++)
  for(j=1;j<=m;j++)
   {
    z+=*(p[i]+j)*log2(1/(*(p[i]+j)));
   }
 return z; 
}
main()
{
 float s=0;
 printf("\nplease in put the dimension of 'X' and 'Y'\n");
 scanf("%d %d",&n,&m);
 printf("\nThe dimension of X is n=%d\nThe dimension of Y is m=%d\nPlease input the condition probability:P(y[j]/x[i]),",n,m);
 printf("(after you input one number please click the 'enter')\n");
/*条件概率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("please input P(x[i]):(after you input one number please click the 'e


相关文档:

C语言回调函数使用

什么是回调函数?
  简而言之,回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。
  为什么要使用回调函数?
  因为可以把调用者与被调用者分开。调用者不关心谁是被调用者,所有它需知道的,只是存在 ......

选C的概率真的是最高的!

从小老师就教导我们,不会做的题就选C,因为选择题选C的概率是最高的。事实上真是如此吗?今天我突发奇想,利用Google做了一个小实验。统计显示,答案选C的题果然是最多的! Results 1 - 10 of about 364,000 for "这道题选A".
Results 1 - 10 of about 352,000 for "这道题选B".
Results 1 - 10 of about 521,000 for ......

一个Linux下C线程池的实现

from:邹鑫的专栏
    什么时候需要创建线程池呢?简单的说,如果一个应用需要频繁的创建和销毁线程,而任务执行的时间又非常短,这样线程创建和销毁的带来的开销就不容忽视,这时也是线程池该出场的机会了。如果线程创建和销毁时间相比任务执行时间可以忽略不计,则没有必要使用线程池了。
  &n ......

Visual C++中的C运行时库浅析(lib dll)

Visual C++中的C运行时库浅析(lib dll)
一、历史
  C运行时库就是C run-time library,诞生于20世纪70年代,是C而非C++语言世界的概念,C程序运行时需要这些库中的函数。
  C语言是所谓的“小内核”语言,就其语言本身来说很小(不多的关键字,程序流程控制,数据类型等)。所以,C语言内核开发出来之后, ......

yichi的c代码书写规范

//yichi的c代码编写规范:091216
//一、常量:
//  所有宏定义、枚举常数和const变量全部由大写字母构成,词与词之间用下划线分开,例如#define GPS_WORK_STATUS 0x30
//二、变量:
//  局部变量全部由小写字母构成,词与词之间用下划线分开,例如uint8 ack_delay_time[4];全局变量与局部变量 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号