#include "mex.h" #include <math.h> void timestwo(double y[], double x[]) { y[0] = 2.0*x[0]; return; } void mexFunction( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[] ) { double *y; double *x; unsigned int m, n; /* Check for proper number of arguments. */ if (nrhs !=1) { mexErrMsgTxt("Only one input argument allowed."); } else if (nlhs !=1) { mexErrMsgTxt("Only one output argument allowed."); } /* The input x must be a scalar, get the size of x. */ m = mxGetM(prhs[0]); /* rows */ n = mxGetN(prhs[0]); /* columns */ if (!mxIsNumeric(prhs[0]) || mxIsComplex(prhs[0]) || mxIsSparse(prhs[0]) || !mxIsDouble(prhs[0]) || !(m ==1 && n ==1)) { mexErrMsgTxt("Input x must be a scalar."); } /* Create a matrix for the return argument. */ plhs[0] = mxCreateDoubleMatrix(m, n, mxREAL); /* Assign pointers to each input and output. */ y = mxGetPr(plhs[0]); x = mxGetPr(prhs[0]); /* Call the timestwo subroutine. */ timestwo(y, x); }Il est important de faire les vérifications de type car MATLAB n'a pas la même représentation de variable que C. Vérifier la validité des types réduit le risque d'erreur.