Вызовите функцию 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
функция в 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
.
mexFunction
| mexCallMATLABWithTrap
| mexEvalString
| mxDestroyArray