易截截图软件、单文件、免安装、纯绿色、仅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语言中,所有传递给函数的参数都是按值传递的。
#include <iostream>
using namespace std;
void Out(int* p)
{
    int j = 11;
    p = &j;
    *p = 12;
    cout<<*p<<endl;
}
int main(int argc,char*argv[])
{
&n ......

汇编看c之一,简单函数调用

简单的函数调用,通过简单的函数调用反汇编可以清楚了解如下
1.栈到底是什么,如何操纵栈的?
2.参数和临时变量是以什么形式在哪存放?
3.如何传递返回值?
举例:
#include <stdio.h>
int add(int a,int b)
{
     int c=0;
     c=a+b;
     ......

从bmp转换工具生成的c文件中获得bitmap图像输出

在函数体中添加以下代码:注:memcpy中的bitmap为bmp生成的c文件数组名
 int width = 533;
  int height = 615;  
  BYTE* DDBdata=new BYTE[width*height*2];
  BYTE* DIBdata;
  memcpy(DDBdata,(void *)bitmap,width*height*2);
  
   ......

C typedef详解及与#define的区别

typedef 声明,简称 typedef,为现有类型创建一个新的名字。比如人们常常使用 typedef 来编写更美观和可读的代码。所谓美观,意指 typedef 能隐藏笨拙的语法构造以及平台相关的数据类型,从而增强可移植性和以及未来的可维护性。
第一、四个用途
用途一:
定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指 ......

50个c/c++源代码网站

50个c/c++源代码网站
C/C++是最主要的编程语言。这里列出了50名优秀网站和网页清单,这些网站提供c/c++源代码。这份清单提供了源代码的链接以及它们的小说明。我已尽力包括最佳的C/C++源代码的网站。这不是一个完整的清单,您有建议可以联系我,我将欢迎您的建议,以进一步加强这方面的清单。
1、http://snippets.dzone. ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号