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-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