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