snipplrCallback({"id":22115,"title":"mex-function-for-mahalanobis-function","source":"
#include "mex.h"<\/span><\/div><\/li> #include "math.h"<\/span><\/div><\/li> #include<armadillo> <\/span><\/div><\/li> <\/div><\/li> using<\/span> namespace<\/span> arma;<\/span><\/div><\/li> <\/div><\/li> void<\/span> importMatlab(<\/span>mat&<\/span> A, const<\/span> mxArray *<\/span>mxdata)<\/span>{<\/span><\/div><\/li> access::<\/span>rw<\/span>(<\/span>A.mem<\/span>)<\/span>=<\/span>mxGetPr(<\/span>mxdata)<\/span>;<\/span><\/div><\/li> access::<\/span>rw<\/span>(<\/span>A.n_rows<\/span>)<\/span>=<\/span>mxGetM(<\/span>mxdata)<\/span>;<\/span><\/div><\/li> access::<\/span>rw<\/span>(<\/span>A.n_cols<\/span>)<\/span>=<\/span>mxGetN(<\/span>mxdata)<\/span>;<\/span><\/div><\/li> access::<\/span>rw<\/span>(<\/span>A.n_elem<\/span>)<\/span>=<\/span>A.n_rows<\/span>*<\/span>A.n_cols<\/span>;<\/span><\/div><\/li> }<\/span>;<\/span><\/div><\/li> <\/div><\/li> void<\/span> freeVar(<\/span>mat&<\/span> A, const<\/span> double<\/span> *<\/span>ptr)<\/span>{<\/span><\/div><\/li> access::<\/span>rw<\/span>(<\/span>A.mem<\/span>)<\/span>=<\/span>ptr;<\/span><\/div><\/li> access::<\/span>rw<\/span>(<\/span>A.n_rows<\/span>)<\/span>=<\/span>1<\/span>;<\/span><\/div><\/li> access::<\/span>rw<\/span>(<\/span>A.n_cols<\/span>)<\/span>=<\/span>1<\/span>;<\/span><\/div><\/li> access::<\/span>rw<\/span>(<\/span>A.n_elem<\/span>)<\/span>=<\/span>1<\/span>;<\/span><\/div><\/li> }<\/span>;<\/span><\/div><\/li> <\/div><\/li> <\/div><\/li> void<\/span> mexFunction(<\/span>int<\/span> nlhs, mxArray *<\/span>plhs[<\/span>]<\/span>, int<\/span> nrhs, const<\/span> mxArray *<\/span>prhs[<\/span>]<\/span>)<\/span><\/div><\/li> {<\/span><\/div><\/li> if<\/span> (<\/span>nrhs !<\/span>=<\/span> 3<\/span>)<\/span><\/div><\/li> mexErrMsgTxt(<\/span>"Incorrect number of input arguments"<\/span>)<\/span>;<\/span><\/div><\/li> if<\/span> (<\/span>nlhs !<\/span>=<\/span> 1<\/span>)<\/span><\/div><\/li> mexErrMsgTxt(<\/span>"Incorrect number of D arguments"<\/span>)<\/span>;<\/span><\/div><\/li> <\/div><\/li> mat X(<\/span>1<\/span>,1<\/span>)<\/span>;<\/span><\/div><\/li> const<\/span> double<\/span>*<\/span> Xmem=<\/span>access::<\/span>rw<\/span>(<\/span>X.mem<\/span>)<\/span>;<\/span><\/div><\/li> importMatlab(<\/span>X,prhs[<\/span>0<\/span>]<\/span>)<\/span>;<\/span><\/div><\/li> <\/div><\/li> mat Y(<\/span>1<\/span>,1<\/span>)<\/span>;<\/span><\/div><\/li> const<\/span> double<\/span>*<\/span> Ymem=<\/span>access::<\/span>rw<\/span>(<\/span>Y.mem<\/span>)<\/span>;<\/span><\/div><\/li> importMatlab(<\/span>Y,prhs[<\/span>1<\/span>]<\/span>)<\/span>;<\/span><\/div><\/li> <\/div><\/li> mat W(<\/span>1<\/span>,1<\/span>)<\/span>;<\/span><\/div><\/li> const<\/span> double<\/span>*<\/span> Wmem=<\/span>access