mexCallMATLAB (Фортран)

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