Matlab - Leer archivo ENORME a velocidad RAZONABLE

 
Vista:
sin imagen de perfil

Leer archivo ENORME a velocidad RAZONABLE

Publicado por Carlos (2 intervenciones) el 10/07/2014 11:42:21
Buenos días a todos,

Voy directo a la duda:

tengo un archivo .txt muy grande formado por:

-11 líneas de encabezado omitibles
-una matriz de datos de 102400 filas y 48 columnas, con los datos dispuestos del siguiente modo:
;0.000000000;-0.005630779;...........................;0.000000000;0.005615889
;0.000097656;0.011308677;...........................;0.000097656;-0.019945318
;0.000195313;0.030462751;...........................;0.000195313;-0.033628475
.
.
.
.
.

Lo que necesito es leerlos desde MatLab en un tiempo bajo (menos de un minuto, a ser posible).
He probado con textscan, con fscan + bucles y no baja de los 30 minutos.

Sé, por un programa hecho en matlab (del cual no puedo ver el código) que se puede tardar poco tiempo en leer la misma cantidad de datos.

Espero que me deis algo de luz en este tema porque ya no se que hacer.

Muchas gracias por adelantado.
Un saludo.
Carlos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Jorge De Los Santos
Val: 30
Ha disminuido su posición en 12 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Leer archivo ENORME a velocidad RAZONABLE

Publicado por Jorge De Los Santos (213 intervenciones) el 10/07/2014 16:40:46
Hola Carlos.

Puedes utilizar la función "importdata" o bien "dlmread".

Para usar "importdata" puedes hacerlo de la siguiente forma:

1
2
3
A=importdata('nombre_archivo.txt');
datos_numericos=A.data;
encabezados=A.textdata;


Con lo anterior MATLAB te devuelve una estructura con los campos "data"y "textdata" en los cuales se guardan los datos y los encabezados respectivamente.


Si usas "dlmread"puedes hacerlo como sigue:

1
A=dlmread('nombre_archivo.txt',';',11,0);


La función "dlmread" sólo lee datos numéricos, el punto y coma se coloca para especificar la forma en que están separados los datos, el número 11 le indica que debe iniciar a leer a partir de la 12va fila y el 0 que debe comenzar en la 1era columna.


Saludos, espero te resulte útil.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Leer archivo ENORME a velocidad RAZONABLE

Publicado por Carlos (2 intervenciones) el 14/07/2014 13:46:30
Muchas gracias!

He conseguido leerlo en 85segundos con el dlmread ^^ tiempo record jajaja

La función importdata no viene implementada en Octave, que es con lo que estoy trabajando, pero bueno, no creo que lo hiciera más rápido de lo que ya lo lee.

Gracias de nuevo.
Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar