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 выходные аргументы.

Внимание

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

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

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

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

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

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

расширить все

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

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

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

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

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

Совет

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

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