Los archivos más portables para el intercambio de datos son los de texto con los valores separados por un delimitador. Entre los que es posible destacar CSV ("Comma Separated Values") o TSV ("Tab separated values"). Su popularidad es debida a que la mayoría de las bases de datos, hojas de cálculo y otras aplicaciones son capaces de leer y guardar los datos en este formato. Siendo lo más habitual encontrar los conjuntos de datos en este tipo de archivos. Por eso es importante saber cómo guardar y leer archivos de texto con Matlab.
Las funciones que se verán en esta entrada solamente funcionan con matrices numéricas. En el caso de que sea necesario trabajar con celdas es necesario actualizar a la versión 2019a de Matlab en las que se han definido nuevas funciones. En una futura entrada se explicarán las funciones para importar y exportar datos con Matlab 2019a.
El formato CSV
Para guardar y leer archivos de texto con Matlab en formato CSV existen dos funciones csvwrite()
y csvread()
. Tal como se puede deducir del nombre la primera permite guardar los datos en un archivo y la segunda guardarlos. A modo de ejemplo se puede crear un matriz aleatoria con rand(4)
y guardar esta en un archivo con csvwrite()
.
data = rand(4); csvwrite('data.csv', data);
Obteniendo así el siguiente archivo:
0.81472,0.63236,0.95751,0.95717
0.90579,0.09754,0.96489,0.48538
0.12699,0.2785,0.15761,0.80028
0.91338,0.54688,0.97059,0.14189
Una vez creado el archivo se pueden recuperar los datos en Matlab con csvread()
simplemente indicando el nombre del mismo.
csv = csvread('data.csv');
En el archivo se puede ver que los valores son almacenados en formato corto, por lo que se pierde precisión. Algo que puede ser un problema en ciertas aplicaciones. Para solucionar este problema y utilizar otros separadores es necesario utilizar las funciones dlmwrite()
y dlmread()
.
Funciones DLM
Las funciones dlmwrite()
y dlmread()
son más flexibles que las vistas en la sección anterior. Ya que permite cambiar el separador utilizado en el archivo y como la precisión. El funcionamiento básico es similar, en dlmwrite()
solo hay que indicar el nombre del archivo y la matriz.
dlmwrite('data.csv', data);
En este caso se obtiene el mismo resultado que con csvwrite()
. Para modificar el separador se puede utilizar la propiedad 'delimiter'
seguida del carácter que se desea utilizar. Por otro lado, la propiedad con la que se fija la precisión es 'precision'
seguida de la cual es necesario indicar el número de decimales. Por ejemplo, para emplear el punto y coma como separador de valores y trabajar con 9 decimales se puede escribir.
dlmwrite('data.csv', data, 'delimiter', ';', 'precision', 9);
Con lo que se obtiene el siguiente archivo:
0.814723686;0.632359246;0.957506835;0.957166948
0.905791937;0.097540405;0.964888535;0.485375649
0.126986816;0.278498219;0.157613082;0.800280469
0.913375856;0.546881519;0.970592782;0.141886339
De forma análoga a lo vista en la sección anterior la función par importar los datos es dlmread()
.
csv = dlmread('data.csv');
Generalmente no es necesario indicar el separador, pero en caso de duda se puede pasar como segundo parámetro.
csv = dlmread('data.csv', ';');
Consideraciones en Matlab 2019a y posteriores
En Matlab 2019a han sido introducidas cuatro nuevas funciones ( writematrix()
, readmatrix()
, writecell()
y readcell()
) que permiten guardar matrices y celdas tanto en archivos de texto como en hojas de cálculo Microsoft Excel. Debido a su mayor flexibilidad estas son las funciones recomendadas para Matlab 2019a o posteriores. En el caso de trabajar con versiones anteriores es necesario continuar utilizando estas funciones.
Conclusiones
En esta entrada se han visto las funciones básicas para guardar y leer archivos de texto con Matlab. Unas funciones que son muy útiles cuando es necesario importar o exportar datos en este formato, uno de los más populares.
A partir de las versiones de Matlab del año 2019 se encuentran disponibles otras funciones para importar y exportar datos en formato de texto que ofrecen más posibilidades.
Imágenes: Pixabay (cocoparisienne)
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.