API Фортран Матрица и API Фортран MEX описывают функции, которые можно использовать в шлюзе, и вычислительные процедуры, которые взаимодействуют с MATLAB® программы и данные в рабочем пространстве MATLAB.
Чтобы использовать эти функции, включите fintrf
заголовок, который объявляет точку входа и стандартных программ интерфейса. Файл находится в вашем
папка. Поместите этот оператора в свой исходный файл:matlabroot
\ extern\включить
#include "fintrf.h"
Используйте функции API Фортран Матрица для прохождения mxArray
, тип MATLAB используется для хранения массивов в файлы MEX и из них. Для примеров, использующих эти функции, смотрите
.matlabroot
/ extern/examples/mx
Используйте функции MEX API на языке Фортран для выполнения операций в среде MATLAB. Для примеров, использующих эти функции, смотрите
.matlabroot
/ extern/examples/mex
В отличие от функций MATLAB, файловые функции MEX не имеют собственной рабочей рабочей области переменной. Функции файла MEX работают в рабочей области вызывающего абонента. Чтобы вычислить строку, используйте mexEvalString
. Чтобы получить и поместить переменные в рабочую область вызывающего абонента, используйте mexGetVariable
и mexPutVariable
функций.
Библиотеки Matrix и MEX используют preprocessor macros MATLAB
mwSize
и mwIndex
для кросс-платформенной гибкости. mwSize
представляет значения размеров, такие как измерения массива и количество элементов. mwIndex
представляет значения индексов, такие как индексы в массивы.
MATLAB имеет дополнительный макрос препроцессора для файлов Фортран, mwPointer
. MATLAB использует уникальный тип данных, mxArray
. Поскольку вы не можете создать тип данных в Фортране, MATLAB передает специальный идентификатор, созданный mwPointer
макрос препроцессора, в программу Фортран. Так вы получаете информацию о mxArray
в собственном типе данных ФОРТРАН. Например, можно узнать размер mxArray
, определите, является ли она строкой, и проверьте содержимое массива. Использовать mwPointer
для создания независимого от платформы кода.
Препроцессор ФОРТРАН преобразует mwPointer
на integer*4
при построении двоичных файлов MEX на 32-разрядных платформах и в integer*8
при построении на 64-разрядных платформах.
Примечание
Объявление неправильного размера указателя может привести к сбою программы.
%val
ФОРТРАН
КонструкцияФортран% val
конструкция задает, что аргумент, (arg
)arg
, должно передаваться по значению, а не по ссылке. Большинство, но не все, компиляторы Фортран поддерживают %val
конструировать.
Если ваш компилятор не поддерживает %val
создайте, скопируйте значения массива во временный истинный массив Фортрана с помощью mxCopy
* стандартные программы (для примера, mxCopyPtrToReal8
).
%val
Пример конструкцииЕсли ваш компилятор поддерживает %val
конструкция, можно использовать стандартные программы, которые указывают непосредственно на данные (то есть указатель, возвращенный типизированными функциями доступа к данным, такими как mxGetDoubles
или mxGetComplexDoubles
). Можно использовать %val
передать содержимое этого указателя в стандартную подпрограмму, где он объявляется как матрица двойной точности Фортрана.
Например, рассмотрим стандартную программу шлюза, которая вызывает свою вычислительную процедуру, yprime
около:
call yprime(%val(yp), %val(t), %val(y))
Если ваш компилятор Фортран не поддерживает %val
конструкция, Вы заменяете вызов вычислительной стандартной подпрограммы на:
C Copy array pointers to local arrays. call mxCopyPtrToReal8(t, tr, 1) call mxCopyPtrToReal8(y, yr, 4) C C Call the computational subroutine. call yprime(ypr, tr, yr) C C Copy local array to output array pointer. call mxCopyReal8ToPtr(ypr, yp, 4)
Необходимо также добавить следующую линию объявления в верхнюю часть стандартной программы шлюза:
real*8 ypr(4), tr, yr(4)
Если вы используете mxCopyPtrToReal8
или любой другой mxCopy
* стандартные программы, размер массивов, объявленных в стандартной программе шлюза Фортран, должен быть больше или равен размеру входов файла MEX, поступающего из MATLAB. В противном случае mxCopyPtrToReal8
не работает правильно.
Matrix API на языке ФОРТРАН | MEX API на языке ФОРТРАН | mwIndex
| mwPointer
| mwSize
| mxArray