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); } } }