exponenta event banner

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-функции, которое сохраняется после завершения функции 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