Поток данных в файлах 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 оставляют неприсвоенными.

Стандартная программа шлюза, func.c, использует Матричные API-функции C, показанные в, Создают или Удаляют Массив, чтобы создать массивы MATLAB для ваших выходных аргументов. Это устанавливает plhs[0] и plhs[1] к указателям на недавно созданные массивы MATLAB. Это использует функции, которые, как показывают в Доступе к данным, извлекали ваши данные от ваших входных параметров prhs[0] и prhs[1]. Наконец, это вызывает вашу вычислительную процедуру, передавая указатели данных ввода и вывода как параметры функции.

MATLAB присваивает plhs[0] C и plhs[1] к D.

Цикл MEX C/C++

Смотрите также

| |

Похожие темы

Была ли эта тема полезной?