Вызовите функцию 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