Компоненты файла 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 команда.

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

| | | |