Поток данных в файлах MEX на языке Фортран

Отображение входа и выхода данных

Предположим, ваш файл 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.

Цикл MEX на языке ФОРТРАН