Вызовите функцию 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
Массив указателей на выходные аргументы
Внимание
The 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
функция в 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/refbook
См. эти примеры в
:matlabroot
/ extern/examples/mx
MATLAB выделяет динамическую память для хранения массивов в plhs
для mexCallMATLAB
. MATLAB автоматически отменяет выделение динамической памяти при выходе из файла MEX. Однако, если пространство в куче находится в премиуме, вызовите mxDestroyArray
когда вы закончите с массивами в plhs
.
mexCallMATLABWithTrap
| mexEvalString
| mexFunction
| mxDestroyArray