mexFunction
Стандартная программа шлюзаgateway routine является точкой входа к файлу MEX. Именно через эту стандартную программу остальная часть доступов MATLAB® стандартных программ в ваших файлах MEX. Имя стандартной программы шлюза mexFunction
. Это занимает место основной программы в вашем исходном коде.
Имя исходного файла, содержащего 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
команда.
mexext
| mexFunction
| mwPointer
| mxDuplicateArray
| mxIsClass