mexCallMATLAB (C)

Вызовите функцию MATLAB, пользовательскую функцию или MEX-функцию

Синтаксис C

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

Описание

Примечание

Чтобы записать MEX-функции с помощью C++ 11 функций и 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

Была ли эта тема полезной?