Предположим свой файл MEX myFunction
имеет два входных параметра и один выходной аргумент. Синтаксисом MATLAB® является [X] = myFunction(Y, Z)
. Вызывать myFunction
из MATLAB введите:
X = myFunction(Y, Z);
Интерпретатор MATLAB вызовы mexFunction
, стандартная программа шлюза к myFunction
, со следующими аргументами:
Вашим входом является prhs
, двухэлементный массив (nrhs = 2
). Первым элементом является указатель на mxArray
названный Y
и вторым элементом является указатель на mxArray
названный Z
.
Вашим выходом является plhs
, массив с одним элементом (nlhs = 1
) где одним элементом является null
указатель. Параметр plhs
точки ни в чем, потому что выход X
не создается, пока стандартная подпрограмма не выполняется.
Стандартная программа шлюза создает выходной массив и устанавливает указатель на него в plhs[0]
. Если стандартная программа не присваивает значение plhs[0]
но вы присваиваете выходное значение функции, когда вы вызываете ее, MATLAB генерирует ошибку.
Примечание
Возможно возвратить выходное значение даже если nlhs = 0
, который соответствует возвращению результата в ans
переменная.
Следующая схема Цикла MEX показывает, как входные параметры вводят файл MEX, что функционирует, стандартная программа шлюза выполняет, и как выходные параметры возвращаются к MATLAB.
В этом примере, синтаксисе файла MEX func
[C, D] = func(A,B)
. На рисунке, вызове func
говорит MATLAB передавать переменные A
и B
к вашему файлу MEX. C
и D
оставлены неприсвоенными.
Стандартная программа шлюза использует mxCreate*
функции, чтобы создать массивы MATLAB для ваших выходных аргументов. Это устанавливает plhs[0]
и plhs[1]
к указателям на недавно созданные массивы MATLAB. Это использует mxGet*
функции, чтобы извлечь ваши данные из ваших входных параметров prhs[0]
и prhs[1]
. Наконец, это вызывает вашу вычислительную процедуру, передавая указатели входных и выходных данных как параметры функции.
MATLAB присваивает plhs[0]
toc
и plhs[1]
к D
.
Цикл Фортрана MEX