Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Las bibliotecas API de FortranMATLAB

La biblioteca Matrix y la biblioteca MEX describen funciones que puede utilizar en su Gateway y rutinas computacionales que interactúan con los programas y los datos en el espacio de trabajo.MATLAB®MATLAB Estas bibliotecas forman parte de la biblioteca de referencia de API de Fortran y C/C++.MATLAB

Para utilizar estas funciones, incluya el encabezado, que declara el punto de entrada y las rutinas de interfaz.fintrf El archivo está en su matlabroot\extern\include Carpeta. Ponga esta declaración en su archivo de origen:

#include "fintrf.h"

Biblioteca matricial

Utilice las funciones de Fortran Matrix Library para pasar mxArray, el tipo utiliza para almacenar matrices, a y desde archivos MEX.MATLAB Para obtener ejemplos con estas funciones, consulte matlabroot/extern/examples/mx.

Biblioteca MEX

Utilice las funciones de la biblioteca MEX para realizar operaciones en el entorno.MATLAB Para obtener ejemplos con estas funciones, consulte matlabroot/extern/examples/mex.

A diferencia de las funciones, las funciones de archivo MEX no tienen su propio espacio de trabajo variable.MATLAB Las funciones de archivo MEX operan en el área de trabajo del llamador. Para evaluar una cadena, utilice.mexEvalString Para obtener y colocar variables en el área de trabajo del llamador, utilice las funciones y.mexGetVariablemexPutVariable

Macros de preprocesador

Las bibliotecas Matrix y MEX utilizan la y para la flexibilidad multiplataforma. representa valores de tamaño, como las dimensiones de la matriz y el número de elementos. representa valores de índice, como índices en matrices.MATLABmacros de preprocesadormwSizemwIndexmwSizemwIndex

tiene una macro de preprocesador adicional para archivos Fortran,. utiliza un tipo de datos único, el.MATLABmwPointerMATLABmxArray Dado que no puede crear un tipo de datos en Fortran, pasa un identificador especial, creado por la macro de preprocesador, a un programa Fortran.MATLABmwPointer Así es como obtiene información sobre un tipo de datos nativo de Fortran.mxArray Por ejemplo, puede averiguar el tamaño de la, determinar si es una cadena y ver el contenido de la matriz.mxArray Se usa para compilar código independiente de la plataforma.mwPointer

El preprocesador Fortran se convierte en cuando se construyen archivos MEX binarios en plataformas de 32 bits y a cuando se construye en plataformas de 64 bits.mwPointerinteger*4integer*8

Nota

Declarar un puntero para que sea el tamaño incorrecto puede hacer que el programa se bloquee.

Utilizando la construcción Fortran%val

El Fortran %val(arg) construcción especifica que un argumento, arg, se pasa por valor, en lugar de por referencia. La mayoría, pero no todos, compiladores Fortran apoyan la construcción.%val

Si el compilador no admite la construcción, copie los valores de la matriz en una matriz Fortran verdadera temporal con las rutinas * (por ejemplo,).%valmxCopymxCopyPtrToReal8

Construir ejemplo%val

Si el compilador admite la construcción, puede usar rutinas que apuntan directamente a los datos (es decir, el puntero devuelto por funciones de acceso a datos con tipo como o).%valmxGetDoublesmxGetComplexDoubles Puede utilizar para pasar el contenido de este puntero a una subrutina, donde se declara como una matriz Fortran de doble precisión.%val

Por ejemplo, considere una rutina de pasarela que llama a su rutina computacional, por:yprime

call yprime(%val(yp), %val(t), %val(y))

Si el compilador de Fortran no admite la construcción, reemplazará la llamada a la subrutina computacional con:%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)

También debe agregar la siguiente línea de declaración a la parte superior de la rutina de la puerta de enlace:

real*8 ypr(4), tr, yr(4)

Si utiliza o cualquiera de las otras * rutinas, el tamaño de las matrices declaradas en la rutina de pasarela de Fortran debe ser mayor o igual que el tamaño de las entradas para el archivo MEX que viene de.mxCopyPtrToReal8mxCopyMATLAB De lo contrario, no funciona correctamente.mxCopyPtrToReal8

Consulte también

| | | | |