Previous: Sparse Matrices with Mex-Files, Up: Mex-Files
It is also possible call other Octave functions from within a mex-file
using mexCallMATLAB. An example of the use of
mexCallMATLAB can be see in the example below
#include "mex.h"
void
mexFunction (int nlhs, mxArray* plhs[], int nrhs, const mxArray* prhs[])
{
char *str;
mexPrintf ("Hello, World!\n");
mexPrintf ("I have %d inputs and %d outputs\n", nrhs, nlhs);
if (nrhs < 1 || ! mxIsString (prhs[0]))
mexErrMsgTxt ("function name expected");
str = mxArrayToString (prhs[0]);
mexPrintf ("I'm going to call the interpreter function %s\n", str);
mexCallMATLAB (nlhs, plhs, nrhs-1, prhs+1, str);
mxFree (str);
}
If this code is in the file myfeval.c, and is compiled to myfeval.mex, then an example of its use is
myfeval("sin", 1)
a = myfeval("sin", 1)
=> Hello, World!
I have 2 inputs and 1 outputs
I'm going to call the interpreter function sin
a = 0.84147
Note that it is not possible to use function handles or inline functions within a mex-file.