dawn@0: /* dawn@0: * dftoperiod.c dawn@0: * estimate period from df dawn@0: * dawn@0: * Alain de Cheveigné, CNRS/Ircam Dec 2001 dawn@0: * (c) 2001 CNRS dawn@0: */ dawn@0: dawn@0: #include dawn@0: #include "mex.h" dawn@0: dawn@0: /* #define MWRAP */ dawn@0: #include "mwrap_check.h" dawn@0: dawn@0: /* Input Arguments */ dawn@0: #define D_IN prhs[0] dawn@0: #define B_IN prhs[1] dawn@0: #define T_IN prhs[2] dawn@0: dawn@0: /* output arguments */ dawn@0: #define PRD_OUT plhs[0] dawn@0: dawn@0: static void ddftoperiods( dawn@0: double *dp, /* input df */ dawn@0: double *bp, /* bounds */ dawn@0: double *prdp, /* periods */ dawn@0: double thresh, /* threshold */ dawn@0: int m, /* nrows of df */ dawn@0: int n /* ncols of df */ dawn@0: ) dawn@0: { dawn@0: int j,k, p, lo, hi, maxj, goodflag; dawn@0: double z, min, globalmin; dawn@0: dawn@0: /* bounds */ dawn@0: lo= GET(bp[0]); dawn@0: hi= GET(bp[1]); dawn@0: if (lo<0 || hi>m ) { dawn@0: mexPrintf("%d %d\n", lo, hi); dawn@0: mexErrMsgTxt("DFTOPERIOD: bounds are out of bounds"); dawn@0: } dawn@0: dawn@0: #define MARGIN 1.5 dawn@0: dawn@0: for (k=0;k hi) { maxj = hi; } dawn@0: } dawn@0: dawn@0: if (z