Добавил:
jarenoeletto
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:
#include "fintrf.h"
subroutine mexFunction(nlhs, plhs, nrhs, prhs)
C Интерфейсная процедура для fun
C Описание типов аргументов
implicit none
C
mwPointer plhs(*), prhs(*)
integer nlhs, nrhs
C Описание типов используемых функций из Matlab API
mwPointer mxGetPr
mwPointer mxCreateDoubleMatrix
C Описание типов, указателей на используемые переменные mxArrays:
mwPointer a_pr, b_pr, x_pr, c_pr, d_pr, y_pr
C Описание типов используемых переменных
real*8 a, b, x, c, d, y
C Получение указателей на первый и второй входные
C аргументы, с которыми вызывается МЕХ-функция,
C указатели хранятся в массиве prhs,
C используется функция Matlab API
a_pr = mxGetPr(prhs(1))
b_pr = mxGetPr(prhs(2))
C Запись значений первого и второго входных аргументов C с указателями а_pr и b_pr в переменные а и b при
C помощи процедуры Matlab API
call mxCopyPtrToReal8 (a_pr, a, 1)
call mxCopyPtrToReal8 (b_pr, b, 1)
C Вызов процедуры fun, которая заносит в переменную с
C сумму а и b
call fun(a, b, x)
C Создание выходного аргумента — вещественного массива
C размера один на один при помощи функции Matlab API,
C выходной аргумент есть указатель на массив
plhs(1) = mxCreateDoubleMatrix(1, 1, 0)
x_pr = mxGetPr(plhs(1))
C Копирование значения с в массив с указателем с_рr
call mxCopyReal8ToPtr(x, x_pr, 1)
c_pr = mxGetPr(prhs(3))
d_pr = mxGetPr(prhs(4))
call mxCopyPtrToReal8 (c_pr, c, 2)
call mxCopyPtrToReal8 (d_pr, d, 2)
call fun(c, d, y)
plhs(2) = mxCreateDoubleMatrix(1, 1, 0)
y_pr = mxGetPr(plhs(2))
call mxCopyReal8ToPtr(y, y_pr, 2)
end