Вызовите функцию MATLAB, пользовательскую функцию или MEX-функцию
#include "mex.h" int mexCallMATLAB(int nlhs, mxArray *plhs[], int nrhs, mxArray *prhs[], const char *functionName);
Примечание
Чтобы записать MEX-функции с помощью современных функций C++ и MATLAB Data API, смотрите Приложения C++ MEX.
Звонить mexCallMATLAB для вызова внутреннего MATLAB® числовые функции, операторы MATLAB, пользовательские функции или другие MEX-функции.
Оба mexCallMATLAB и mexEvalString выполните команды MATLAB. Использовать mexCallMATLAB для возврата результатов (аргументы с левой стороны) обратно в MEX-функцию. mexEvalString функция не возвращает значения в MEX-функцию.
Если functionName обнаруживает ошибку, MATLAB завершает MEX-функцию и возвращает управление в подсказку MATLAB. Чтобы захватить ошибки, используйте mexCallMATLABWithTrap функция.
Избегайте использования mexCallMATLAB функция в Simulink® S-функции. Если это так, не храните результат plhs
mxArray указатели в любом состоянии блока s-function, которое сохраняется после завершения MEX-функции. Выходы mexCallMATLAB иметь временные возможности и автоматически уничтожаться в конце вызова MEX-функции.
Возможно сгенерировать объект типа mxUNKNOWN_CLASS использование mexCallMATLAB. Например, эта функция возвращает две переменные, но только присваивает одной из них значение.
function [a,b] = foo(c) a = 2*c;
Если вы тогда звоните foo использование mexCallMATLABтеперь тип неназначенной выходной переменной mxUNKNOWN_CLASS.
См. эти примеры в :matlabroot/ extern/examples/mex
См. эти примеры в :matlabroot/ extern/examples/refbook
См. эти примеры в :matlabroot/ extern/examples/mx
MATLAB выделяет динамическую память для хранения массивов в plhs для mexCallMATLAB. MATLAB автоматически отменяет выделение динамической памяти при выходе из MEX-функции. Однако, если пространство в куче находится в премиуме, вызовите mxDestroyArray когда вы закончите с массивами в plhs.
mexCallMATLABWithTrap | mexEvalString | mexFunction | mxDestroyArray