Поток данных в Файлах 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] toc и plhs[1] к D.

Цикл Фортрана MEX