Вызовите функцию MATLAB, пользовательскую функцию или файл MEX
#include "fintrf.h" integer*4 mexCallMATLAB(nlhs, plhs, nrhs, prhs, functionName) integer*4 nlhs, nrhs mwPointer plhs(*), prhs(*) character*(*) functionName
nlhsКоличество выходных аргументов. Должно быть меньше чем или равно 50.
plhsМассив указателей на выходные аргументы
Аргумент plhs для mexCallMATLAB не является тем же самым как plhs для mexFunction. Не уничтожайте mxArray, возвращенный в plhs для mexFunction.
nrhsКоличество входных параметров. Должно быть меньше чем или равно 50.
prhsМассив указателей на входные параметры
functionNameСимвольная строка, содержащая имя встроенной функции MATLAB®, оператора, пользовательской функции или MEX-функции, чтобы вызвать.
Если functionName является оператором, поместите оператор в паре одинарных кавычек, например, '+'.
0 в случае успеха и ненулевое значение, если неудачный.
Вызовите mexCallMATLAB, чтобы вызвать внутренние числовые функции MATLAB, операторы MATLAB, пользовательские функции или другие файлы MEX. И 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/refbook
Смотрите эти примеры в :matlabroot/extern/examples/mx
MATLAB выделяет динамическую память, чтобы сохранить массивы в plhs для mexCallMATLAB. MATLAB автоматически освобождает динамическую память, когда вы выходите из файла MEX. Однако, если пространство "кучи" в большом почете, вызовите mxDestroyArray, когда вы закончены с массивами в plhs.
mexCallMATLABWithTrap | mexEvalString | mexFunction | mxDestroyArray