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 функция в 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.

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