Manual Matlab

Page 106

Aprenda Matlab 7.0 como si estuviera en Primero

página 98

7. INTERFACES DE MATLAB CON OTROS LENGUAJES 7.1. Interfaces de MATLAB con DLLs genéricas 7.1.1. INTRODUCCIÓN Una librería compartida es una colección de funciones ejecutables listas para ser utilizadas en una o más aplicaciones. En este sentido, MATLAB permite utilizar librerías externas que se hayan generado en sistemas MS-Windows y Linux. Los ficheros fuente de la librería se precompilan y ensamblan, y de este modo se obtiene un fichero con la extensión ".dll" (dynamic link library) en MS Windows o ".so" (shared object) en UNIX y Linux. En tiempo de ejecución de la aplicación que las va a utilizar las funciones de la librería son cargadas en memoria y ejecutadas. MATLAB permite usar las funciones de estas librerías programadas en C. El acceso a las funciones se realiza a través de una interface de línea de comandos. Esta interface ofrece la posibilidad de cargar una librería externa en MATLAB y acceder a cualquiera de las funciones definidas en dicha librería. Aunque los tipos de datos son diferentes en MATLAB y en C, en muchos casos es posible pasar los tipos de MATLAB a C sin tenerse que preocupar de la conversión de datos, porque MATLAB la realiza de forma automática. Esta interface permite también usar funciones programadas en otros lenguajes distintos de C siempre que dichas funciones tengan una interface con C. Por ejemplo, es posible llamar a una DLL programada en Visual Basic si existe un fichero de declaraciones C para dicha librería. 7.1.2. CARGAR Y LIBERAR LAS LIBRERÍAS DE MEMORIA Para que MATLAB tenga la posibilidad de acceder a una función externa de una librería es necesario en primer lugar cargar la librería en memoria. Una vez cargada, ya se puede llamar a cualquiera de sus funciones. Cuando la librería ya no se necesita es conveniente borrarla para liberar memoria. Para cargar una librería en MATLAB se usa la función loadlibrary. La sintáxis de la función es la siguiente: >> loadlibrary('shrlib', 'hfile')

donde shrlib es el nombre de la librería y hfile es el nombre del fichero que contiene la declaración de las funciones (fichero de encabezamiento o header).

Como ejemplo se va a cargar en memoria la librería de MATLAB libmx que contiene las funciones mx (funciones en C que permiten trabajar con los mxArrays, es decir, con cualquiera de las variables de MATLAB). En la primera sentencia mostrada a continuación se guarda en la variable hfile la dirección del fichero matrix.h que contiene la declaración de las funciones mx. La segunda sentencia carga en memoria la librería libmx.dll. >> hfile = [matlabroot '\extern\include\matrix.h']; >> loadlibrary('libmx', hfile)

Si ya no se necesitan estas funciones se puede liberar la memoria mediante la función unloadlibrary, en la forma: >> unloadlibrary libmx

La función libisloaded devuelve un 1 (true) si la función esta cargada y 0 (false) si no lo está. Esta función se podría utilizar en la forma siguiente: if libisloaded('libmx')==1 ...


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.