Revista Informática

Importar y exportar datos en Matlab 2019a

Publicado el 31 mayo 2019 por Daniel Rodríguez @analyticslane

En una entrada reciente se ha explicado cómo guardar y leer archivos de texto en Matlab. Utilizando las funciones disponibles hace años. Por otro lado, hace más tiempo, se publicó otra entrada en la que se enseñaba a trabajar con formato de Microsoft Excel en Matlab. En Matlab 2019a, se han introducido nuevas funciones que permiten unificar estas tareas. Siendo posible a partir de este momento tanto importar como exportar datos en Matlab 2019a de una manera unificada.

Las funciones que se van a explicar en esta entrada son writematrix(), readmatrix(), writecell() y readcell(). Las dos primeras son para trabajar con matrices, mientras que la dos segundas para hacerlo con celdas. Funcionan de una manera similar a writetable() y readtable() que existen desde hace años para las tablas.

Exportación de datos

Las matrices disponibles en memoria un una sesión de Matlab se pueden exportar a un archivo de texto con la función writematrix(). El único parámetro necesario es el nombre de la matriz, generando un archivo con extensión txt y el con mismo nombre que la matriz.

data = rand(4);
writematrix(data);

Al ejecutar este código se obtiene el archivo data.txt con el siguiente contenido.

0.814723686393179,0.63235924622541,0.957506835434298,0.957166948242946
0.905791937075619,0.0975404049994095,0.964888535199277,0.485375648722841
0.126986816293506,0.278498218867048,0.157613081677548,0.8002804688888
0.913375856139019,0.546881519204984,0.970592781760616,0.141886338627215

Suele ser habitual que el usuario quiera fijar el nombre del archivo. Lo que se tiene que indicar como segundo parámetro.

writematrix(data, 'data.csv');

En esta ocasión, los datos se guardan en el archivo data.csv.

Modificar en delimitador

Por defecto, writematrix() utiliza la coma para separar los valores en el archivo. Algo que se puede cambiar si es necesario. Para lo que se dispone de la propiedad 'Delimiter', después de la cual se indica el separador. Por ejemplo, en caso de que se desee que el separador sea punto y coma es necesario utilizar.

writematrix(data, 'data.dat', 'Delimiter', ';');

Es decir, el archivo es el siguiente

0.814723686393179;0.63235924622541;0.957506835434298;0.957166948242946
0.905791937075619;0.0975404049994095;0.964888535199277;0.485375648722841
0.126986816293506;0.278498218867048;0.157613081677548;0.8002804688888
0.913375856139019;0.546881519204984;0.970592781760616;0.141886338627215

Otro separador bastante habitual es el tabulado, lo que se indica con la cadena tab o \t. Así, si se desea guardar un archivo en formato tsv se ha de indicar el tabulador como separador y que el tipo de archivo es de texto. Ya que la función utiliza la extensión del archivo para saber el formato a utilizar, y tsv no está entre los conocidos. Lo que se tiene que hacer con la propiedad 'FileType' que tiene dos opciones: 'text' para archivos de texto o 'spreadsheet' para hojas de cálculo. Esto es, el archivo se puede generar con el siguiente código.

writematrix(data, 'data.tsv', 'Delimiter', 'tab', 'FileType', 'text');

Exportar archivo Excel

Tal como se ha explicado en la sección anterior writematrix() utiliza la extensión del archivo para decidir el formato. Así, simplemente indicando un archivo con extensión xls o xlsx como destino los datos se exportarán en este formato.

writematrix(data, 'data.xlsx');

Opcionalmente se puede indicar que el tipo de archivo con la propiedad 'FileType'.

writematrix(data, 'data.xlsx', 'FileType', 'spreadsheet');

Opciones en los archivos Excel

Al exportar los datos a un libro Excel se puede indicar el nombre de la hoja en la que se guardan los datos. Esto se hace mediante la propiedad 'Sheet', después de la cual se pasa una cadena con el nombre de la hoja.

writematrix(data, 'data.xlsx', 'Sheet', 'Data');

Importar datos

Para importar los datos desde un archivo a una matriz en Matlab se utiliza la función readmatrix(). Solamente es necesario indicar el nombre del archivo, ya que el formato lo interpreta a partir de la extensión. Cuando la extensión no es conocida o el separador no es el estándar es necesario indicarlo en las opciones. Así los archivos guardados en las secciones anteriores se pueden recuperar en las siguientes líneas.

csv = readmatrix('data.csv');
dat = readmatrix('data.csv', 'Delimiter', ';');
tsv = readmatrix('data.tsv', 'Delimiter', 'tab', 'FileType', 'text');
xls = readmatrix('data.xlsx');

Otros tipos de datos: celdas y tablas

Además de estos métodos para importar y exportar los datos de matrices existen otros pares para trabajar con celdas y tablas. Las funciones para trabajar con celdas también se introdujeron en la versión 2019a y son writecell() y readcell(). Por otro lado, las funciones para trabajar con tablas son writetable() y readtable(), las cuales están disponibles desde la versión 2013b.

El funcionamiento de estas cuatro funciones es similar a las vistas en esta entrada, siendo la principal diferencia el tipo de dato con el que trabajan.

Conclusiones

En esta entrada se han visto las nuevas funciones para importar y exportar datos en Matlab 2019a. Los cuales son más flexibles que los existentes en versiones anteriores. Aún así, es necesario tener en cuenta si es necesario distribuir el código a usuarios que no están actualizados. En tal caso es mejor usar los métodos para archivos de texto u hojas de cálculo disponibles también en las versiones anteriores.

Imágenes: Pixabay (StockSnap)

No te olvides valorar esta entrada

Suscríbete a nuestro boletín

Suscríbete al boletín semanal para estar al día de todas las publicaciones de Analytics Lane.

Contenido relacionado


Volver a la Portada de Logo Paperblog