#include #include #include void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { /*declare variables*/ const mwSize *dims; mwIndex indx; int i, numdims; int numelin; mxClassID classid; double *input1r, *input1i, *output1r, *output1i; double a, b, c, d, denom; double ai, bi, ci, di, denomi, denomabs; /*figure out the classid*/ classid = mxGetClassID(prhs[0]); /*check inputs*/ if (nrhs>1) mexErrMsgTxt("Too many input arguments"); /*associate inputs*/ input1r = mxGetData(prhs[0]); input1i = mxGetImagData(prhs[0]); /*figure out dimension info and number of elements*/ dims = mxGetDimensions(prhs[0]); numdims = mxGetNumberOfDimensions(prhs[0]); numelin = mxGetNumberOfElements(prhs[0]); /*associate output*/ if (input1i == NULL) { plhs[0] = mxCreateNumericArray(numdims, dims, classid, mxREAL); output1r = mxGetData(plhs[0]); } else { plhs[0] = mxCreateNumericArray(numdims, dims, classid, mxCOMPLEX); output1r = mxGetData(plhs[0]); output1i = mxGetImagData(plhs[0]); } /* do the computation*/ if (input1i == NULL) { for (i=0; i