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-функции. Функция возвращает 0 в случае успеха, и ненулевое значение, если неудачный.

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

Для полного описания аргументов ввода и вывода, переданных functionName, смотрите mexFunction.

Входные параметры

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

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

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

Внимание

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

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

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

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

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

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

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

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

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

Советы

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

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