Call MATLAB function, user-defined function, or MEX function
#include "mex.h" int mexCallMATLAB(int nlhs, mxArray *plhs[], int nrhs, mxArray *prhs[], const char *functionName);
Note
To write MEX functions using modern C++ features and the MATLAB Data API, see C++ MEX Applications.
Call mexCallMATLAB
to invoke internal MATLAB® numeric functions, MATLAB operators, user-defined functions, or other MEX functions.
Both mexCallMATLAB
and mexEvalString
execute
MATLAB commands. Use mexCallMATLAB
for returning results
(left side arguments) back to the MEX function. The mexEvalString
function
does not return values to the MEX function.
If functionName
detects an error, MATLAB terminates the MEX function and returns control to the MATLAB prompt. To trap errors, use the mexCallMATLABWithTrap
function.
Avoid using the mexCallMATLAB
function in Simulink® S-functions. If you do, do not store the resulting
plhs
mxArray
pointers in any S-function block state that persists
after the MEX function finishes. Outputs of mexCallMATLAB
have temporary scope and are automatically destroyed at the end of the MEX
function call.
It is possible to generate an object of type
mxUNKNOWN_CLASS
using mexCallMATLAB
.
For example, this function returns two variables but only assigns one of them a
value.
function [a,b] = foo(c) a = 2*c;
If you then call foo
using
mexCallMATLAB
, the unassigned output variable is now
type mxUNKNOWN_CLASS
.
See these examples in
:matlabroot
/extern/examples/mex
See these examples in
:matlabroot
/extern/examples/refbook
See these examples in
:matlabroot
/extern/examples/mx
MATLAB allocates dynamic memory to store the arrays in
plhs
for mexCallMATLAB
. MATLAB automatically deallocates the dynamic memory when you exit the MEX
function. However, if heap space is at a premium, call
mxDestroyArray
when you are finished with the arrays in
plhs
.
mexCallMATLABWithTrap
| mexEvalString
| mexFunction
| mxDestroyArray