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

Валидация входных параметров

Список функций для проверки входов в стандартных подпрограммах см. в категории Matrix Library, Validate Fortran Data. mxIsClass функция является общим способом тестирования mxArray.

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

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

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

См. также

| | | |