/* Hello12 fucntion for MATLAB 5.x By Gerox Programmed by Gerox 1999.July 6 for Multi Dimentional array demonstration program */ #include #include "mex.h" void mexFunction(int nlhs,mxArray *plhs[],int nrhs,const mxArray * prhs[]) { int l,n,m,i,j,k,L; int *pldims,*prdims; int nldims,nrdims; double *pldata,*prdata; if(nrhs == 0) { mexErrMsgTxt("One input must be required."); return; } nrdims = mxGetNumberOfDimensions(prhs[0]); if(!mxIsEmpty(prhs[0]) && mxIsDouble(prhs[0])) { prdims = (int*)mxGetDimensions(prhs[0]); nldims = nrdims; pldims = (int*)mxCalloc(nldims,sizeof(int)); for(i = 0;i < nrdims;i++) pldims[i] = prdims[i]; plhs[0] = mxCreateNumericArray(nldims,pldims,mxDOUBLE_CLASS,mxREAL); mxFree(pldims); pldata = mxGetPr(plhs[0]); L = mxGetNumberOfElements(prhs[0])/prdims[0] / prdims[1]; for(k = 0;k < L;k++) { for(j = 0;j < prdims[0];j++) { for(i = 0;i < prdims[1];i++) { pldata[i+prdims[0] * j+ prdims[0] * prdims[1] * k] = i+prdims[0] * j+ prdims[0] * prdims[1] * k; } } } return; } else mexErrMsgTxt("Input must be double Matrix"); return; }