www.pudn.com > MutualInformationICA.zip > MIxnyn.C


//####################################################################
//Mutual information estimator, rectangular version 
//####################################################################
//2 May 2004
//Contact: kraskov@its.caltech.edu
//####################################################################
//uses mir_xnyn
#include 
#include 
#include 
#include 
#include 
#include 

#include "miutils.h"

int main(int argc, char **argv) {

  FILE *fin;
  int i;
  double **x;
  double *scal;
  double *min;
  double *max;
  double *psi;
  int K,N;
  int d;
  double mir;
  int dimx,dimy;


  int BOX1;

  double s,me;
  double addnoise=-1;

  if (argc<6) {
    fprintf(stderr,"\nMutual Infomation (MI) k-nearest neighbours statistics (rectangular)\n\n");
    fprintf(stderr,"Usage:\n%s    <# points> <# neighbours> [addnoise]\n\n",argv[0]);
    fprintf(stderr,"Input:\n\t\ttext file with  columns and <# points> rows\n");
    fprintf(stderr,"\t\t\tnumber of columns for X (dimension of X)\n");
    fprintf(stderr,"\t\t\tnumber of columns for Y (dimension of Y)\n");
    fprintf(stderr,"\t<# points>\tnumber of rows (length of characteristic vector)\n");
    fprintf(stderr,"\t<# neighbours>\tnumber of the nearest neighbours for MI estimator\n");
    fprintf(stderr,"\t[addnoise]\tnoise amplitude; default 1e-8\n");
    fprintf(stderr,"\nOutput:\n");
    fprintf(stderr,"\nMI\n");
    fprintf(stderr,"\nContact: kraskov@its.caltech.edu\n");
    exit(-1);
  }



  dimx=atoi(argv[2]);
  dimy=atoi(argv[3]);
  N=atoi(argv[4]);
  K=atoi(argv[5]);
  if (argc==7) {addnoise=atof(argv[6]);}
  if (argc>=8) {fprintf(stderr,"Too many input arguments\n");exit(-1);}

  x=(double**)calloc(dimx+dimy,sizeof(double*));
  for (d=0;dmax[d]) max[d]=x[d][i];
    }
    for (i=0;i