стандартная программа Шлюза mexFunction
Стандартная программа шлюза является точкой входа к файлу 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
.
Вычислительная процедура содержит код для выполнения вычислений, которые вы хотите реализованный в бинарном файле MEX. Несмотря на то, что не требуемый, полагайте, что запись стандартной программы шлюза, mexFunction
, вызывает вычислительную процедуру. Чтобы подтвердить входные параметры и преобразовать их в типы, требуемые вычислительной процедурой, используйте код mexFunction
в качестве обертки.
Если вы пишете отдельный шлюз и вычислительные процедуры, можно объединить их в один исходный файл или в отдельные файлы. При использовании отдельные файлы, файл, содержащий mexFunction
, должен быть первым исходным файлом, перечисленным в команде mex
.
mexFunction
| mexext
| mwPointer
| mxDuplicateArray
| mxIsClass