UNMSM-QUMICA
MATLAB.
Importando Datos de Texto Numrico
Si su archivo de datos solo contiene datos numricos, usted puede usar muchas de las
funciones de importacin de MATLAB (listadas en la Tabla 6.2), dependiendo de como estn
delimitados los datos.
Tabla 6.2: Comparacin de caractersticas de las Funciones de Importacin de
datos ASCI
Funcin
Tipo de dato
delimitadores
Nmero de valores
de retorno
Uno
csvread
datos numricos
Solo comas
dlmread
datos numricos
Uno
fscanf
alfabticos y numricos; sin
embargo, ambos tipos
retornados en una sola
variable de retorno
Cualquier
caracter
Cualquier
caracter
load
datos numricos
Solo espacios
Uno
textread
alfabticos y numricos
Cualquier
caracter
Valores mltiples
de retorno
Uno
Notas
Usado principalmente
con hojas de clculo.
Flexible y fcil de usar.
Parte de rutinas de bajo
nivel de E/S de
archivos. Requiere el
uso de fopen para
obtener un identificador
de archivo y fclose
despus de la lectura.
Fcil de usar. Usa la
forma funcional de load
para especificar el
nombre de la variable
de salida
Flexible, poderoso y
fcil de usar. Usa
cadenas de formato para
especificar
conversiones.
Si los datos son rectangulares, esto es, cada fila tiene el mismo nmero de elementos, el
comando ms simple de usar es el comando load. (El comando load tambin puede ser
usado para importar archivos MAT, el formato binario de MATLAB para ahorrar espacio.)
Por ejemplo, el archivo llamado datos.txt contiene dos filas de nmeros delimitados por
espacios.
1 2 3 4 5
6 7 8 9 10
Cuando usted usa load como un comando, ste importa los datos y crea una variable en el
espacio de trabajo con el mismo nombre del archivo, exceptuando la extensin del archivo.
>>load datos.txt;
>>whos
>>datos
Si desea nombrar la variable del espacio de trabajo con un nombre diferenta al del nombre del
archivo, use la forma funcional de load. En el siguiente ejemplo, los datos de datos.txt
son cargado a la variable A del espacio de trabajo.
>>A = load('datos.txt');
Laboratorio de Programacin y Computacin
Prof. Heber Helfer
UNMSM-QUMICA
Importando Archivos de Datos ASCII Delimitados
Si su archivo de datos usa un caracter delimitador diferente al espacio, usted puede elegir una
de varias funciones de importacin. (Vea la Tabla 6-2 para ver la lista completa.) La ms
simple de usar es la funcin dlmread.
Por ejemplo, considere un archivo de nombre ph.dat cuyo contenido est separado por
puntos y comas:
7.2;8.5;6.2;6.6
5.4;9.2;8.1;7.2
para leer todo el contenido de este archivo a un arreglo llamado A, digite
A = dlmread('ph.txt', ';');
Usted especifica el delimitador usado en el archivo de datos como un segundo argumento de
dlmread. Observe que, a pesar de que los ltimos nmeros de cada fila no estn seguidos por
un delimitador, dlmread puede procesar correctamente el archivo. dlmread ignora los
espacios en blanco entre los datos. De esa manera, el comando dlmread anterior funciona
an si el contenido de ph.txt es
7.2; 8.5; 6.2;6.6
5.4; 9.2 ;8.1;7.2
Importando Datos Numricos con Encabezados de Texto
Para importar un archivos de datos ASCII que contiene encabezados de texto use la funcin
textread, especificando el parmetro headerlines. textread acepta un grupo de
parmetros predefinidos que controlan diversos aspectos de la conversin. (Para ver una lista
completa de estos parmetros vea la pgina de referencia de textread.) El parmetro
headerlines le permite especificar el nmero de lneas en el encabezado del archivo que
textread debiera ignorar.
Por ejemplo, el archivo grados.txt contiene datos numricos con formato con un
encabezado de texto de una lnea.
Grado1
78.8
99.5
89.5
Grado2
55.9
66.8
77.0
Grado3
45.9
78.0
56.7
Para importar estos datos use el comando:
[grado1 grado2 grado3] = textread('grados.dat','%f %f %f',...
'headerlines',1)
grado1 =
78.8000
99.5000
89.5000
grado2 =
Laboratorio de Programacin y Computacin
Prof. Heber Helfer
UNMSM-QUMICA
55.9000
66.8000
77.0000
grado3 =
45.9000
78.0000
56.7000
Importando Datos Numricos y Alfabticos Mezclados
Si su archivo de datos contiene una mezcla de datos ASCII alfabticos y numricos, use la
funcin textread para importar los datos. textread puede retornar mltiples variables de
salida y usted puede especificar el tipo de cada variable.
Por ejemplo, el archivo midata.dat contiene una mezcla de datos alfabticos y numricos:
Sally
Larry
Tommy
Tipo1
Tipo2
Tipo1
12.34
34.56
67.89
45
54
23
Si
Si
No
Para leer el contenido completo del archivo midata.txt en el espacio de trabajo especifique
el nombre del archivo y la cadena de formato como argumentos de textread. En la cadena
de formato usted incluye especificadores de conversin que definen cmo desea usted que
cada tem sea interpretado. Por ejemplo, especifique %s para datos tipo cadena (texto), %f
para datos tipo punto flotante, etc.
Para cada especificador de conversin en su cadena (texto) de formato, usted debe especificar
una variable de salida separada. textread procesa cada dato en el archivo tal como se
especifica en la cadena de formato y coloca el valor en la variable de salida. El nmero de
variables de salida debe coincidir con el nmero de especificadores de conversin en la
cadena de formato.
En este ejemplo, textread lee el archivo midata.txt, aplicando la cadena de formato a
cada lnea del archivo hasta el fin del archivo.
[nombres,tipos,x,y,respuesta] = textread('midata.txt','%s %s %f ...
%d %s',1)
nombres =
'Sally'
'Larry'
'Tommy'
tipos =
'Tipo1'
'Tipo2'
'Tipo1'
x =
12.3400
34.5600
67.8900
y =
45
Laboratorio de Programacin y Computacin
Prof. Heber Helfer
UNMSM-QUMICA
54
23
respuesta =
'Si'
'Si'
'No'
Si sus datos usan un caracter delimitador diferente al caracter espacio, usted debe usar el
parmetro 'delimiter' de textread para especificar el delimitador. Por ejemplo, si el
archivo midata.dat usa punto y coma como delimitador, usted deber usar este comando:
[nombres,tipos,x,y,respuesta]=textread('midata.txt','%s %s %f ...
%d %s', 'delimiter',';')
Exportando Datos ASCII
Esta seccin describe cmo usar las funciones de MATLAB para exportar datos en algunos
formatos ASCII comunes. Por ejemplo, usted puede usar estas funciones para exportar una
matriz MATLAB como un archivo de texto donde las filas y columnas estn representadas
como valores numricos separados por espacios. La funcin que usted use depende de la
cantidad de datos que desee exportar y de su formato.
Tabla 6.4: Comparacin de Caractersticas de Funciones de Exportacin de Datos ASCII
Funcin
Se usa con
Datos numricos
Delimitador
Solo coma
diary
Datos numricos o
arreglo de celdas
Solo espacio
dlmwrite
fprintf
Datos alfabticos
y numricos
Datos numricos
Cualquier
caracter
Cualquier
caracter
save
Datos numricos
csvwrite
Notas
Usado principalmente con datos de hoja
de clculo.
Puede ser usado para arreglos pequeos.
Requiere la edicin del archivo de datos
para eliminar textos extraos.
Fcil de usar, flexible.
Parte de rutinas de bajo nivel de E/S de
archivos . Este es el comando ms
flexible pero tambin el ms difcil de
usar. Se debe usar fopen para obtener un
identificador de archivo antes de escribir
los datos y fclose para cerrar el archivo
despus de escribir los datos.
Tab o espacio Fcil de usar; los valores de salida son de
alta precisin.
Laboratorio de Programacin y Computacin
Prof. Heber Helfer
UNMSM-QUMICA
Exportando Archivos de Datos ASCII Delimitados
Para exportar un arreglo como un archivo de datos ASCII delimitado, usted puede usar ya sea
el comando save, especificando el calificador ASCII, o la funcin dlmwrite. El comando
save es fcil de usar; sin embargo, la funcin dlmwrite provee ms flexibilidad,
permitindole especificar cualquier caracter como delimitador y exportar subconjuntos de un
arreglo especificando un rango de valores.
Usando el Comando save
Para exportar el arreglo A,
>>A = [ 1 2 3 4 ; 5 6 7 8 ];
use el comando save tal como sigue:
>>save data.txt A -ASCII
Si usted ve el archivo creado en un editor de texto, se ve como esto:
1.0000000e+000 2.0000000e+000 3.0000000e+000 4.0000000e+000
5.0000000e+000 6.0000000e+000 7.0000000e+000 8.0000000e+000
Por omisin, save usa espacios como delimitadores, sin embargo puede usar tabs en vez de
espacios, especificando el calificador -tabs.
Cuando usted usa save para escribir un arreglo de caracteres a un archivo ASCII, ste escribe
el equivalente ASCII de los caracteres al archivo. Si usted escribe la cadena de caracteres
'hello' a un archivo, save escribe los valores
104 101 108 108 111
Usando la Funcin dlmwrite
Para exportar un arreglo en formato ASCII y especificar el delimitador usado en el archivo,
use la funcin dlmwrite.
Por ejemplo, para exportar el arreglo A,
>>A = [ 1 2 3 4 ; 5 6 7 8 ];
como un archivo de datos ASCII que usa punto y coma como delimitador, use este comando:
>>dlmwrite('midata.txt',A, ';')
Si usted ve el archivo creado en un editor de texto, se ver as:
1;2;3;4 5;6;7;8
Observe que dlmwrite no inserta delimitadores al final de las filas. Por omisin, si usted no
especifica un delimitador, dlmwrite usa una coma como delimitador. Usted puede
especificar un espacio (' ') como delimitador o, si usted especifica comillas vacas (''), sin
delimitador.
Laboratorio de Programacin y Computacin
Prof. Heber Helfer
UNMSM-QUMICA
Usando el Comando diary para Exportar Datos
Para exportar arreglos numricos pequeos o arreglos de celdas, usted puede usar el comando
diary. diary crea una copia textual de su sesin en MATLAB en un archivo de disco (con
excepcin de los grficos.)
Por ejemplo, si usted tiene un arreglo A en su espacio de trabajo,
>>A = [ 1 2 3 4; 5 6 7 8 ];
ejecute estos comandos en la lnea de ingreso de comandos de MATLAB para exportar este
arreglo usando
diary:
1. Active la funcin diary. Opcionalmente puede dar nombre al archivo de salida que crea
diary.
>>diary misdatos.txt
2. Despliegue en pantalla el contenido del arreglo que desea exportar. Este ejemplo despliega
el arreglo A. Usted tambin podra desplegar un arreglo de celda u otro tipo de dato
MATLAB.
>> A
A =
1 2 3 4
5 6 7 8
3. Desactive la funcin diary
>>diary off
diary crea el archivo misdatos.txt y registra todos los comandos ejecutados en la sesin
de MATLAB hasta que se deje de usarlo.
A =
1 2 3 4
5 6 7 8
>>diary off
4. Abra el archivo misdatos.txt de diary en un editor de textos y borre todo el texto
extrao.
Laboratorio de Programacin y Computacin
Prof. Heber Helfer