Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабы / 8 / lr8g

.f
Скачиваний:
28
Добавлен:
03.08.2018
Размер:
1.76 Кб
Скачать
#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
Соседние файлы в папке 8