Вызовите функцию MATLAB, пользовательскую функцию или MEX-функцию
#include "mex.h" int mexCallMATLAB(int nlhs, mxArray *plhs[], int nrhs, mxArray *prhs[], const char *functionName);
Чтобы записать MEX-функции с помощью C++ 11 функций и MATLAB Data API, см. Приложения C++ MEX.
Вызовите mexCallMATLAB, чтобы вызвать внутренние числовые функции MATLAB®, операторы MATLAB, пользовательские функции или другие MEX-функции. Функция возвращает 0 в случае успеха и ненулевое значение, если неудачный.
И mexCallMATLAB и mexEvalString выполняют команды MATLAB. Используйте mexCallMATLAB для возврата результатов (аргументы левой стороны) назад к MEX-функции. Функция mexEvalString не делает возвращаемых значений к MEX-функции.
Для полного описания аргументов ввода и вывода, переданных functionName, смотрите mexFunction.
Если functionName обнаруживает ошибку, MATLAB отключает MEX-функцию и возвращает управление в посдказку MATLAB. Чтобы захватить ошибки, используйте функцию mexCallMATLABWithTrap.
Избегайте использования функции mexCallMATLAB в S-функциях Simulink®. Если вы делаете, не храните получившийся 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