martes, noviembre 27, 2012

Matlab y Excel

   Esta mañana asistí a un webinar (seminario por internet) acerca del uso de Matlab y Excel. Me interesó porque Excel es una herramienta que empleo comúnmente para almacenar y manejar datos, y uso Matlab para su análisis, procesamiento y presentación. Aprendí algunas cosas útiles que me gustaría compartir. Antes de empezar les comento que la versión de Matlab que tengo es Matlab 7 (7.1.0.446 Release 14, SP3), y trabaja con archivos .xls (Excel 97-2003). Aunque son versiones no tan actuales son completamente funcionales. 

   El tema principal fue cómo importar a Matlab los datos guardados en una hoja Excel, para aprovechar las herramientas de análisis y visualización que ofrece el Matlab. Esto se hizo de dos maneras:
  • Importando directamente desde Matlab con "Import Data..."
  • Usando la función "putmatrix" del complemento Spreadsheet de Matlab para Excel, directamente desde Excel


   Lo interesante de escribir aquí mi experiencia es que en el webinar usan versiones mucho más recientes de estos programas y por tanto la interfaz es un poco diferente (probablemente las opciones son más avanzadas en su caso), pero sí es algo posible de realizar y por eso quiero compartirlo. Ojalá les sea útil. 


Datos de Excel a Matlab con "Import Data...", desde Matlab

   Iniciamos trabajando con un archivo Excel 97-2003. En este caso el archivo se llama datosMTF.xls y se muestra en la Figura 1. Las primeras 4 filas son los encabezados y tiene 7 columnas de datos. 


Figura 1. Archivo Excel 97-2003.


   El primer paso consiste en abrir Matlab y en la parte de arriba, en "Current Directory" ponemos la ubicación de la carpeta donde está guardado el archivo Excel (o copiamos el archivo Excel a la carpeta "Work" para trabajar en ella, eso es según su preferencia, yo elegí la primera opción). La ruta en mi caso es C:\Users\LIZ\Documents\divulgacion, como se muestra en la Figura 2. Esta figura es importante porque muestra el entorno de Matlab: la pestaña "Current Directory" de la izquierda muestra las carpetas y archivos contenidos en la ruta seleccionada, la pestaña "Workspace" muestra las variables que hayamos definido, la pestaña "Editor" muestra los scripts que tengamos abiertos, la pestaña "Array Editor" muestra las variables en forma de matrices o vectores, "Command History" da una lista de todos los comandos que hayamos empleado, los cuales se escriben en "Command Window". 

Figura 2. Entorno del Matlab.


   Ya que vemos que aparece el archivo datosMTF.xls debajo de "All files" en "Current Directory", el paso siguiente es seleccionarlo, dar clic con el botón derecho y seleccionar "Import Data...". Se abre una ventana como la mostrada en la Figura 3 y tenemos dos opciones: Crear variables igualando el preview que muestra Matlab, o Crear vectores de cada columna. La opción a elegir depende de lo que planeen hacer con los datos. Si elegimos la primera opción, como en la Figura 3, las variables que podemos importar son 3, pero sólo una tiene los datos numéricos que nos interesan: "data", de 21 filas y 7 columnas.


Figura 3. Importar variables igualando el preview.


   Elijamos la primera opción e importemos la variable "data". Debemos recordar que la primera columna corresponde a los valores de frecuencia y podemos extraerla (o guardarla) a una nueva variable llamada "frec", para esto se escribe lo siguiente en "Command Window" (sin >>):

>> frec = data(:,1);



Los dos puntos indican que se tomen todas las filas (sin importar cuántas sean), y el 1 indica que se tome únicamente la primera columna de "data". Para graficar las otras columnas que corresponden a los datos escribimos:

>> plot(frec,data(:,2:7))


donde frec representa los datos del eje X, y las columnas 2 a 7 de "data" son los valores del eje Y. Después de un poco de arreglo usando las "Plot Tools" (ícono rodeado por un recuadro rojo en la Figura 4) directamente desde la ventana de la figura, podemos obtener gráficas como la mostrada en la Figura 4.


Figura 4. Gráfica de los datos.


   Si quisieran extraer todas las columnas de datos de manera separada, el comando sería (para la tercera columna, por ejemplo):

>> datos84 = data(:,3); 



   Sin embargo, esto es mucho más fácil de realizar seleccionando la segunda opción del cuadro de diálogo en "Import Data", como se muestra en la Figura 5. De este modo tenemos los datos separados en 7 variables de tipo vector, cuyo nombre es el encabezado de cada columna en el archivo. 

Figura 5. Importar variables usando las columnas.

   En este caso se facilita el manejo y análisis de los datos por columna, pero si queremos graficarlos como en la Figura 4 necesitamos escribir más líneas que en el caso anterior, por ejemplo:

>> figure, plot(Frecuencia, x55MGy), hold on

>> plot(Frecuencia, x84MGy),
>> plot(Frecuencia, x112MGy),
 ...
>> plot(Frecuencia, x272MGy), hold off



   El comando "figure" abre una ventana nueva para la gráfica, plot(Frecuencia, x55MGy) es la primera gráfica que se realiza, el comando "hold on" indica que los nuevos datos se grafiquen en la primera gráfica y "hold off" se usa para indicar que ya no se añadan datos a la primera gráfica.
   Como ven, la opción que elijan para importar depende de qué quieran hacer con sus datos. La primera es ideal para graficar, la segunda ideal para analizar datos, pero a fin de cuentas las dos son equivalentes.

Datos de Excel a Matlab con "putmatrix", desde Excel

   Matlab cuenta con un componente llamado "Excel Link" que crea en las hojas de datos de Excel unos botones para importar datos a Matlab, entre otras cosas. Para activar este componente debemos hacer lo siguiente: primero abrir Excel, luego dar clic en el botón de Office ubicado en la esquina superior izquierda de la hoja, se abre un cuadro, dar clic en "Opciones de Excel" que se encuentra en la parte inferior del cuadro, seleccionar "Complementos" de la lista de la izquierda. En la parte de abajo aparece "Administrar", seleccionar "Complementos de Excel" y luego dar clic en "Ir". Dar clic en "Examinar" y seguir la siguiente ruta: Equipo> C> Archivos de programa> MATLAB> toolbox> exlink> excllink.xla
   Seleccionar el archivo excllink.xla, dar clic en aceptar, te regresa a la ventana Complementos y aparece "Excel Link 2.3 for use with MATLAB", dar clic en aceptar. En el archivo Excel aparece una nueva pestaña llamada Complementos, que incluye cuatro botones (ver Figura 6): startmatlab, putmatrix, getmatrix y evalstring.

Figura 6. Complemento de Matlab para Excel.

   En mi caso, los botones son muy simples (e incluso sin formato, diría yo), pero con la versión 2012 de Matlab se crea una imagen del ícono de Matlab que despliega un menú (con las mismas opciones) cuando se selecciona. 

  El botón "startmatlab" abre el programa de Matlab, aunque en mi caso (después de haber añadido el complemento), cada vez que abro un archivo Excel el Matlab se abre solito, pero puedo cerrarlo y seguir trabajando sólo con Excel. Sin embargo, cuando quiero empezar a usar los componentes me pide permiso para iniciar Matlab.

   El botón "putmatrix" sirve para exportar los datos de Excel a Matlab. Primero hay que seleccionar los datos, luego se da clic al botón y aparece un cuadro pidiéndonos ingresar el nombre de la variable que llevarán los datos a exportar. Esto nos da la libertad de seleccionar y exportar los datos como mejor nos acomode, como en el caso anterior con "Import Data", ya que podemos seleccionar todas las columnas (sólo los números) o podemos hacerlo fila por fila.

   El botón "getmatrix" nos permite importar datos de Matlab a Excel. Después de seleccionar este botón, se nos pide el nombre de la variable a importar, al dar aceptar copia los datos (vector o matriz) en la celda que esté seleccionada en ese momento. Y así se puede trabajar en Excel con datos de Matlab.

   El botón "evalstring" pide un comando de Matlab para "evaluar" en Matlab. Hasta ahora lo he probado poco y al menos el comando "clc" (que borra los comandos que aparecen en command window) sí funciona.

  Hasta aquí lo aprendido en el webinar. Considero que son herramientas útiles para manejar datos de manerá más dinámica, pero tampoco hay que olvidar los comandos "xlswrite" y "xlsread" (que uso con frecuencia) que podemos emplear para escribir y leer, respectivamente, hojas Excel desde Matlab. ¡Hasta pronto, y ojalá les sirva! 

Más INFO

3 comentarios:

  1. Gracias me ayudo mucho, muy amable saludos desde Perú

    ResponderEliminar
  2. Sabes que buen vídeo. Por favor, que relación tiene la matriz o archivo en Excel con la imagen a color?.Como se diferencia los 3 canales de colores, los números específicamente que colores representa y en que orden, donde encuentro teoría sobre este tema? Gracias.

    ResponderEliminar
  3. Gracias mil! que excelente tutorial

    ResponderEliminar

L'essentiel est invisible pour les yeux.