exponenta event banner

mexCallMATLAB (C)

Вызов функции MATLAB, определяемой пользователем функции или функции MEX

Синтаксис C

#include "mex.h"
int mexCallMATLAB(int nlhs, mxArray *plhs[], int nrhs,
  mxArray *prhs[], const char *functionName);

Описание

Примечание

Сведения о записи функций MEX с использованием современных функций C++ и интерфейса MATLAB Data API см. в разделе Приложения C++ MEX.

Звонить mexCallMATLAB для вызова внутренних цифровых функций MATLAB ®, операторов MATLAB, пользовательских функций или других функций MEX.

Оба mexCallMATLAB и mexEvalString выполните команды MATLAB. Использовать mexCallMATLAB для возврата результатов (аргументы левой стороны) обратно в функцию MEX. mexEvalString функция не возвращает значения функции MEX.

Входные аргументы

развернуть все

Количество ожидаемых выходных данных mxArrays, указанное как целое число, меньшее или равное 50.

Массив указателей на mxArray выходные аргументы.

Внимание

plhs аргумент для mexCallMATLAB не совпадает с plhs для mexFunction. Не уничтожайте mxArray возвращено в plhs для mexFunction.

Количество входов mxArrays, указанное как целое число, меньшее или равное 50.

Массив указателей на mxArray входные аргументы.

Имя встроенной функции MATLAB, оператора, определяемой пользователем функции или функции MEX для вызова, указанной как const char*.

Если functionName - оператор, поместите оператор внутрь пары двойных кавычек, например, "+".

Выходные аргументы

развернуть все

Функция возвращает 0 при успешном выполнении и ненулевое значение при неудачном выполнении.

Обработка ошибок

Если 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/mex:

См. эти примеры в разделе matlabroot/extern/examples/refbook:

См. эти примеры в разделе matlabroot/extern/examples/mx:

Совет

  • MATLAB выделяет динамическую память для хранения массивов в plhs для mexCallMATLAB. MATLAB автоматически освобождает динамическую память при выходе из функции MEX. Однако, если пространство кучи находится на уровне премиум, позвоните mxDestroyArray по завершении работы с массивами в plhs.

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