Daniel@0: /* marg_table.c ../potential/tables */ Daniel@0: Daniel@0: Daniel@0: /******************************************/ Daniel@0: /* 5 input & 1 output */ Daniel@0: /* Big table */ Daniel@0: /* Big domain */ Daniel@0: /* Big sizes */ Daniel@0: /* onto */ Daniel@0: /* maximize, if missed, maximize=0 */ Daniel@0: /* */ Daniel@0: /* small table */ Daniel@0: /******************************************/ Daniel@0: Daniel@0: #include "mex.h" Daniel@0: Daniel@0: void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]){ Daniel@0: int i, j, count, NB, NS, siz_b, siz_s, ndim, temp, maximize; Daniel@0: int *mask, *sx, *sy, *cpsy, *subs, *s, *cpsy2, *ssize; Daniel@0: double *pb, *ps, *bp, *sp, *pbd; Daniel@0: Daniel@0: Daniel@0: siz_b = mxGetNumberOfElements(prhs[1]); Daniel@0: siz_s = mxGetNumberOfElements(prhs[3]); Daniel@0: pb = mxGetPr(prhs[1]); Daniel@0: ps = mxGetPr(prhs[3]); Daniel@0: Daniel@0: NB = mxGetNumberOfElements(prhs[0]); Daniel@0: bp = mxGetPr(prhs[0]); Daniel@0: Daniel@0: pbd = mxGetPr(prhs[2]); Daniel@0: Daniel@0: if(nrhs < 5) maximize = 0; Daniel@0: else maximize = (int)mxGetScalar(prhs[4]); Daniel@0: Daniel@0: if(siz_s == 0){ Daniel@0: plhs[0] = mxCreateDoubleMatrix(1, 1, mxREAL); Daniel@0: sp = mxGetPr(plhs[0]); Daniel@0: if(maximize){ Daniel@0: for(i=0; i