mexCallMATLAB (Fortran)

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

Представлено до R2006a