Точка входа к функции MEX C/C++ создается с Матричным API C
#include "mex.h" void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
Чтобы записать MEX-функции с помощью C++ 11 функций и MATLAB Data API, см. Приложения C++ MEX.
mexFunction
не является стандартной программой, которую вы вызываете. Скорее mexFunction
является именем функции шлюза в C, которого требует каждая MEX-функция. Когда вы вызываете MEX-функцию, MATLAB® находит и загружает соответствующую MEX-функцию того же имени. MATLAB затем ищет символ под названием mexFunction
в MEX-функции. Если это находит один, это вызывает MEX-функцию с помощью адреса символа mexFunction
. MATLAB отображает сообщение об ошибке, если он не может найти стандартную программу под названием mexFunction
в MEX-функции.
Когда вы вызываете MEX-функцию, MATLAB автоматически отбирает nlhs
, plhs
, nrhs
и prhs
с аргументами вызова. В синтаксисе языка MATLAB функции имеют общую форму:
[a,b,c,...] = fun(d,e,f,...)
где ...
обозначает больше элементов того же формата. a,b,c...
является выходными аргументами левой стороны, и d,e,f...
является входными параметрами правой стороны. Аргументы nlhs
и nrhs
содержат количество левой стороны и аргументов правой стороны, соответственно. prhs
является массивом указателей mxArray
, длиной которых является nrhs
. plhs
является массивом, длиной которого является nlhs
, где ваша функция должна установить указатели для вывода mxArray
s.
Возможно возвратить выходное значение, даже если nlhs = 0
, который соответствует возврату результата в переменной ans
.
Чтобы экспериментировать с передачей входных параметров, создайте пример mexfunction.c
, следуя инструкциям в Таблицах Примеров Исходного кода MEX-функции.
См. следующие примеры в matlabroot /extern/examples/mex.