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