Компоненты файла MEX на языке Фортран

стандартная программа Шлюза mexFunction

gateway routine является точкой входа к файлу MEX. Именно через эту стандартную программу остальная часть доступов MATLAB® стандартных программ в ваших файлах MEX. Именем стандартной программы шлюза является mexFunction. Это занимает место основной программы в вашем исходном коде.

Именование файла MEX

Имя исходного файла, содержащего mexFunction, является именем вашего файла MEX, и, следовательно, именем функции, которое вы вызываете в MATLAB. Назовите свой исходный файл Фортрана с прописным расширением файла .F.

Расширение файла бинарного файла MEX зависимо платформой. Вы находите расширение файла с помощью функции mexext, которая возвращает значение для текущей машины.

Различие между.f и.F файлами

Чтобы гарантировать, что ваш файл MEX Фортрана независим от платформы, используйте прописное расширение файла .F.

Компиляторы Фортрана принимают, что исходные файлы с помощью строчного расширения файла .f были предварительно обработаны. На большинстве платформ mex убеждается, что файл предварительно обрабатывается независимо от расширения файла. Однако на платформах Apple Macintosh, mex не может обеспечить предварительную обработку.

Обязательные параметры

Подпись Фортрана для mexfunction:

      subroutine mexFunction(nlhs, plhs, nrhs, prhs)
      integer nlhs, nrhs
      mwpointer plhs(*), prhs(*)

Поместите эту стандартную подпрограмму после своей вычислительной процедуры и любых других стандартных подпрограмм в вашем исходном файле.

Следующая таблица описывает параметры для mexFunction.

ПараметрОписание
prhsМассив входных параметров правой стороны.
plhsМассив выходных аргументов левой стороны.
nrhsКоличество аргументов правой стороны или размер массива prhs.
nlhsКоличество аргументов левой стороны или размер массива plhs.

Объявите prhs и plhs как тип mwPointer, что означает, что они указывают на массивы MATLAB. Они - векторы, которые содержат указатели на аргументы файла MEX.

Можно думать об имени prhs как представление “параметров, правой стороны”, то есть, входных параметров. Аналогично, plhs представляет “параметры, левая сторона” или выходные параметры.

Управление входным параметром и выходные параметры

Введите параметры (найденный в массиве prhs), только для чтения; не изменяйте их в своем файле MEX. Изменение данных во входном параметре может произвести нежелательные побочные эффекты.

Также необходимо заботиться при использовании входного параметра, чтобы создать выходные данные или любые данные, используемые локально в файле MEX. Если вы хотите скопировать входной массив в выходной массив, например, plhs(1), вызовите функцию mxDuplicateArray, чтобы сделать из копии входного массива. Например:

plhs(1) = mxDuplicateArray(prhs(1)) 

Для получения дополнительной информации смотрите тему поиска и устранения неисправностей, Неправильно Создающую Ячейку или Структуру mxArray.

Проверка вводов

Для списка функций, чтобы подтвердить входные параметры к вашим стандартным подпрограммам, смотрите Матричную категорию Библиотеки, Валидацию данных. Функция mxIsClass является способом общего назначения протестировать mxArray.

Вычислительная процедура

computational routine содержит код для выполнения вычислений, которые вы хотите реализованный в бинарном файле MEX. Несмотря на то, что не требуемый, полагайте, что запись стандартной программы шлюза, mexFunction, вызывает вычислительную процедуру. Чтобы подтвердить входные параметры и преобразовать их в типы, требуемые вычислительной процедурой, используйте код mexFunction в качестве обертки.

Если вы пишете отдельный шлюз и вычислительные процедуры, можно объединить их в один исходный файл или в отдельные файлы. Если вы используете отдельные файлы, файл, содержащий mexFunction, должен быть первым исходным файлом, перечисленным в команде mex.

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

| | | |