interfaz del matlab con otros lenguajes de programacion

Anuncio
INTERFAZ DEL MATLAB CON OTROS LENGUAJES DE PROGRAMACION
El entorno de trabajo .Matlab. es sin lugar a dudas una herramienta Imprescindible para un
gran número de científicos e ingenieros que pretenden Realizar simulaciones numéricas.
Esto se debe a que la programación en .Matlab. se puede realizar de manera relativamente
sencilla y eficaz, gracias al gran número de funciones ya implementadas en este entorno.
Entre otros aspectos interesantes, .Matlab. también permite una rápida y efectiva
visualización de los resultados obtenidos y asimismo posibilita la creación de entornos
gráficos para controlar los diferentes parámetros que caractericen los sistemas estudiados.
INTRODUCCION
Una interfaz gráfica de usuario (graphical user interface, GUI) es una interfaz generada con
objetos gráficos como botones, campos de texto, menus, . Estos objetos permiten al usuario
interaccionar con el ordenador, de forma que alguna acción realizada sobre un objeto
cualquiera se traduce en un efecto correlativo. Por ejemplo, si se utiliza un .slider., cuando
éste se mueve cambia el valor de alguna variable. Si se oprime un botón puede aparecer un
cuadro de diálogo con información relevante para el usuario, etc.
La razón por la cual se pretende utilizar .matlab. para la creación de estas interfaces que en
general se pueden realizar con diferentes lenguajes de programación, es que .matlab. posee
un gran número de funciones implementadas que facilitan enormemente la programación
en este entorno.
Además, presenta distintas posibilidades gráficas que el uso de lenguajes de programación
como C++, Fortran o Java no poseen. En consecuencia, el uso del lenguaje de
programación .matlab. permite conseguir aplicaciones con alto contenido gráfico de una
manera relativamente sencilla. Las aplicaciones que se pueden realizar utilizando GUIs son
en general bastante fáciles de aprender y usar debido a que el usuario no necesita conocer
de qué manera están disponibles los diferentes comandos o como funcionan. El efecto que
resulta de una determinada acción por parte del usuario se puede hacer claro mediante el
diseño adecuado de la interfaz. En este trabajo se presentarán algunas interfaces generadas
en .matlab. como material de apoyo en la enseñanza de diferentes temas de la Física. Se
observará de esta manera el enorme potencial que este tipo de aplicaciones tiene al permitir
una interacción dinámica del estudiante con la interfaz.
C o Fortran código de MATLAB
Usted puede llamar a su programas de Fortran C existente o desde MATLAB mediante la
creación de archivos MEX.
Definision de mex:
MEX es una utilidad incorporada que le permite llamar a C o Fortran en MATLAB
compilando su código MATLAB en un ejecutable llamado un archivo MEX. Archivos
MEX se vinculan dinámicamente subrutinas que se llaman como las funciones regulares de
MATLAB. Para ello, debe reemplazar de la aplicación principal () con una función de
pasarela especial - llamado "mexFunction" - para pasar a las entradas y salidas hacia y
desde MATLAB. MEX se discute en la Guía de MATLAB externo Interfaces . Para
ejemplos detallados y otra información detallada MEX, consulte la Guía de MEX-archivos,
Nota Técnica 1605 . Para utilizar MEX, usted no necesita los productos de MathWorks
adicionales, todo lo que necesita es MATLAB y un compilador C o Fortran compatible. En
Windows de 32 bits, un compilador compatible (LCC) se distribuye con MATLAB.
MATLAB Y OCTAVE
A diferencia de Matlab, Octave es programa diseñado para ser utilizado en la consola del
sistema. Dicho de esta manera parece que volvemos a los años 80 antes que se popularizara
Windows pero si nos fijamos un poco en la interfaz de Matlab veremos que a medida que
nos volvamos más hábiles en el uso del lenguaje de programación usaremos más el
intérprete de comando y menos los accesorios que lo rodean.
En Octave uno de los comandos más usados es edit, que también existe en Matlab.
edit
Función que controla el editor asociado al intérprete. En el caso de Matlab se trata del
intérprete propio mientras que Octave utiliza el intérprete predeterminado del sistema. Por
ejemplo, para editar la función nueva aprsin.m escribiremos
>> edit aprsin.m
Cuando consideramos Matlab un lenguaje de programación la razón de ser de Octave se
hace obvia. Muchos desarrolladores querían utilizar el lenguaje Matlab pero o bien no
podían permitirse el coste de una licencia o no estaban dispuestos a utilizar software
propietario. Octave no es exactamente un intérprete para el lenguaje Matlab porque es un
objetivo móvil, cambia en cada versión y muchas de las funcionalidades deben entenderse
por ingeniería inversa. Una diferencia que sí se mantendrá durante mucho tiempo es que,
mientras Matlab es un entorno de desarrollo integrado, Octave es sólo un intérprete y
necesitaremos otras herramientas para hacerlo verdaderamente funcional.
Octave cuenta con un grupo de desarrolladores entusuasta y una enorme comunidad de
usuarios. Si tenéis algún problema utilizando Octave recomiendo encarecidamente darse de
alta en la lista de correo. Podéis encontrar más información en http://www.octave.org.
Octave funciona en prácticamente cualquier sistema operativo mayoritario como Windows,
Linux, MacOS X, Solaris...
Nota
Octave está ganando importancia dentro de entornos grid y en el cloud computing. En un
entorno grid todos los recursos están abstraídos de manera que el usuario no sabe en
realidad dónde está ejecutando cada tarea; es el middleware el que decide cuál es el entorno
de ejecución más adecuado. Esto significa que debe haber una licencia de Matlab por cada
tarea en grid que lo requiera, algo que puede estar fuera del alcance de la infraestructura por
motivos de coste. Octave representa una alternativa a Matlab en estos entornos.
MATLAB Y JAVA
La Interfaz
La interfaz se presenta en forma de un archivo jar llamado jmi.jar distribuido con
MATLAB. Se encuentra en matlabroot / java / jar / jmi.jar donde matlabroot es la ubicación
de la instalación de MATLAB (en Windows que se encuentra en matlabroot \ java \ jar \
jmi.jar). Por ejemplo, en OS X con MATLAB R2009b se encuentra en /
Applications/MATLAB_R2009b.app/java/jar/jmi.jar. Lo que este frasco contiene depende
exactamente de qué versión de MATLAB está instalado. Todo el código de la misma tenga
la com.mathworks.jmi paquete raíz, y hay una serie de sub-paquetes. Las versiones
posteriores de MATLAB han hecho adiciones a jmi.jar
Uso de matlabcontrol de JMI
matlabcontrol hace uso de sólo dos clases y un total de sólo tres métodos.
com.mathworks.jmi.NativeMatlab se utiliza para determinar si el código está ejecutando
actualmente en el hilo principal de MATLAB:
nativeIsMatlabThread boolean static ()
com.mathworks.jmi.Matlab permite a Java para comunicarse con MATLAB. Toda la
comunicación se realiza con:
Objeto public static mtFevalConsoleOutput (String, Object [], int) throws Exception
Si la solicitud entrante para interactuar con MATLAB no se está ejecutando en el
subproceso principal de MATLAB, entonces se puede colocar en el hilo por el uso de:
public static void whenMatlabIdle (Ejecutable)
Explorando JMI
Los métodos y los campos de la clase Matlab pueden ser fácilmente vistos en MATLAB.
Para una lista de todos los nombres de los métodos de la clase en la ventana de comandos
de MATLAB métodos de tipo com.mathworks.jmi.Matlab. Esto mostrará una lista de todos
los nombres de los métodos, pero no va a proporcionar cualquier otra información
importante. Para ver información más detallada, en lugar de tipo methodsview
com.mathworks.jmi.Matlab. Para ver los campos (también conocidos como variables de
miembro de instancia) o escriba los nombres de campo (com.mathworks.jmi.Matlab).
MATLAB Y C #
Ejemplo:
crea los datos en el programa cliente de C # y lo pasa a MATLAB ®. La matriz (que
contiene datos complejos) se pasa entonces de nuevo al programa de C #.
La referencia a la biblioteca de tipos de MATLAB para C # es:
MLApp.MLApp matlab = new MLApp.MLApp ();
Desde el programa de cliente C #, agregue una referencia al proyecto para el objeto COM
MATLAB. Por ejemplo, en Microsoft ® Visual Studio ®, abra el proyecto. En el menú
proyecto, seleccione Agregar referencia. Seleccione la ficha COM del cuadro de diálogo
Agregar referencia. Seleccione la aplicación MATLAB.
Aquí está el ejemplo completo:
using System;
ConsoleApplication4 espacio de nombres
{
clase Class1
{
[STAThread]
static void Main (string [] args)
{
MLApp.MLApp matlab = new MLApp.MLApp ();
System.Array pr = new double [4];
pr.SetValue (11,0);
pr.SetValue (12,1);
pr.SetValue (13,2);
pr.SetValue (14,3);
Pi System.Array = new double [4];
pi.SetValue (1,0);
pi.SetValue (2,1);
pi.SetValue (3,2);
pi.SetValue (4,3);
matlab.PutFullMatrix ("a", "base", de la banda, pi);
System.Array prresult = new double [4];
System.Array piresult = new double [4];
matlab.GetFullMatrix ("a", "base", prresult ref, piresult ref);
}
}
}
Descargar