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


//####################################################################
//Mutual information estimator (with embedding), rectangular version 
//####################################################################
//2 May 2004
//Contact: kraskov@its.caltech.edu
//####################################################################
//uses redr_embed
#include 
#include 
#include 
#include 
#include 
#include 

#include "miutils.h"

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

  FILE *fin;
  int i;
  double **x;
  double *min;
  double *max;
  double *psi;
  int K,N;
  int d;
  double mir;
  int dim,edim,tau;
  
  double s,me;
  double addnoise=-1;
  
  if (argc<7) {
    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 in file\n");
    fprintf(stderr,"\t\t\tembedding dimension\n");
    fprintf(stderr,"\t\t\tembedding delay\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);
  }

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

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