可以使用从mex文件中调用其他Octave函数mexCallMATLAB
。的使用示例mexCallMATLAB
可以在下面的示例中看到。
#include "mex.h" void mexFunction (int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { char *str; mexPrintf ("Starting file myfeval.mex\n"); mexPrintf ("I have %d inputs and %d outputs\n", nrhs, nlhs); if (nrhs < 1 || ! mxIsChar (prhs[0])) mexErrMsgTxt ("ARG1 must be a function name"); str = mxArrayToString (prhs[0]); mexPrintf ("I'm going to call the function %s\n", str); if (nlhs == 0) nlhs = 1; // Octave's automatic 'ans' variable /* Cast prhs just to get rid of 'const' qualifier and stop compile warning */ mexCallMATLAB (nlhs, plhs, nrhs-1, (mxArray**)prhs+1, str); mxFree (str); }
如果此代码在文件中myfeval.c,并编译为myfeval.mex,那么它的使用示例是
a = myfeval ("sin", 1) ⇒ Starting file myfeval.mex I have 2 inputs and 1 outputs I'm going to call the interpreter function sin a = 0.84147
请注意,在mex文件中不可能使用函数句柄。
版权所有 © 2024-2025 Octave中文网
ICP备案/许可证号:黑ICP备2024030411号-2