/* rep_mult.c repmat first two operands to the size provided by */ /* the third operand, then perform point multiply */ /* 3 input, 1 output */ /* C = rep_mult(A, B, sizes) */ #include "mex.h" void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { double *xp, *yp, *zp, *pSizes; int xnd, ynd, numElements = 1; const int *xdim, *ydim; int i, j, ndim; int *s, *sx, *sy, *cpsx, *cpsy; int *subs, *s1, *cpsx2, *cpsy2; if (nrhs != 3) mexErrMsgTxt("Incorrect number of inputs."); if (nlhs > 1) mexErrMsgTxt("Too many output arguments."); xnd = mxGetNumberOfDimensions(prhs[0]); ynd = mxGetNumberOfDimensions(prhs[1]); xdim = mxGetDimensions(prhs[0]); ydim = mxGetDimensions(prhs[1]); ndim = mxGetNumberOfElements(prhs[2]); pSizes = mxGetPr(prhs[2]); sx = (int *)malloc(sizeof(int)*ndim); sy = (int *)malloc(sizeof(int)*ndim); s = (int *)malloc(sizeof(int)*ndim); s1 = (int *)malloc(sizeof(int)*ndim); *(cpsx = (int *)malloc(sizeof(int)*ndim)) = 1; *(cpsy = (int *)malloc(sizeof(int)*ndim)) = 1; subs = (int *)malloc(sizeof(int)*ndim); cpsx2 = (int *)malloc(sizeof(int)*ndim); cpsy2 = (int *)malloc(sizeof(int)*ndim); for(i=0; i