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