Предположим, ваш 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] кому C и plhs[1] кому D.
Цикл Fortran MEX
