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;d max[d]) max[d]=x[d][i]; } for (i=0;i