Matlab - Cargar archivo .COD con Matlab

 
Vista:

Cargar archivo .COD con Matlab

Publicado por Daiana (4 intervenciones) el 12/01/2013 18:43:47
Hola a todos.

Tengo que cargar, leer y trabajar con un archivo .COD. Este tiene 4 líneas de header, y luego 79 columnas con datos numéricos, y una de ellas con variables de caracter.

He intentado con importdata e importWizard, pero no logro eliminar las líneas de header, y leer los datos como una matriz.
No sé si el problema es la extensión del archivo.
Alguno sabe qué comando puedo usar para cargarlo?

Gracias!
Saludos
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 Dave
Val: 497
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Cargar archivo .COD con Matlab

Publicado por Dave (1094 intervenciones) el 18/01/2013 01:11:40
Hola Diana;

Una opción podría ser que utilices la interface import Wizard para tratar de importar tus datos, de lo contrario habría que crear un script para cargar los datos de forma personalizada, teniendo en cuenta el numero líneas de cabeceras.

Por otro lado, aprovecho en comentarte sobre mis servicios de programación en general, para mayor referencia puedes ver mi blog.

Espero que sea de alguna ayuda.

Saludos
Dave Correa
[email protected]
Servicios de Programación Matlab
http://fismatlab.blogspot.com/
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

Cargar archivo .COD con Matlab

Publicado por Daiana (4 intervenciones) el 18/01/2013 01:51:35
Gracias Dave!
Pero traté con ese comando, y no pude.
El problema es que el archivo contiene 5 líneas de header, y varias columnas. Y en algunas de esas columnas aparecen unos NAN.

Logré cargar el archivo con un fopen, y luego quitar las líneas de header con fgetl. Pero aún no sé cómo hacer para cargar los datos en forma de matriz, debido a esos NAN.
Con fgets puedo ir leyendo cada línea, pero eso sólo me sirve para leerlas en forma de caracter por pantalla.

La estructura del archivo es la siguiente:


jdlfkoewhdyfjkdskfisghjklsjdfi
data
kjsdlñkjidyjfdkfoidg
hkjhjshidoopkpos
jhgdhgushijoki

(esas serían las líneas de header)

2012 67 78 9 0 55 77 9 654 8 0.8 NAN 99 227.4 44.8
2012 45 NAN 90 8.5 7 68 8 89,9 8 NAN 9 89 8.76 9.1
................
...............
.........
................


Son varias filas y varias columnas. Y los NAN ese encuentran de forma aleatoria, es decir que no siguen ningún patrón, ni se encuentran todos en la misma fila o columna.


Gracias!
Saludos
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
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Cargar archivo .COD con Matlab

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 18/01/2013 06:01:42
No te había contestado tu pregunta, porque tu pregunta está mal planteado.
Por lo menos deberías poner las 20 primeras líneas de tu archivo.COD, para ver la forma que es,
pero como no lo hiciste, simplemente no te contesté.
Bueno envíame tu archivo .COD a mi correo y pon tu avance de tu código al foro, así habrá mas personas que puedan ayudarte o darte sugerencias viendo tu avance de tu código.
Además compartes tus conocimientos de matlab con los demás usuarios del foro.

Saludos.
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
programador en matlab
Servicios de programación matlab
[email protected]

http://matlabcaballero.blogspot.com
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
Imágen de perfil de Dave
Val: 497
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Cargar archivo .COD con Matlab

Publicado por Dave (1094 intervenciones) el 18/01/2013 19:05:12
Hola Daiana;

Un ejemplo concreto basado en un archivo de datos *.cod sería el siguiente código.

Este segmento de datos deberían ser guardados en un archivo "datos.cod"

1
2
3
4
5
6
7
8
9
10
jdlfkoewhdyfjkdskfisghjklsjdfi
data
kjsdlnkjidyjfdkfoidg
hkjhjshidoopkpos
jhgdhgushijoki
2012    49    28    50    76    96    85    35
2012    nan    68    96    26    55    26    20
2012    65    66    35    51    nan    82    26
2012    71    17    nan    70    15    25    62
2012    76    12    23    90    26    nan    48



Aquí el programa que leería la información del archivo datos.cod

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
clear all,clc
 
fid01 = fopen('datos.cod');
% Lee la cabecera (5 líneas)
for nn=1:5
tline = fgetl(fid01);
disp(tline)
end
 
var=[];
n=1;
while ischar(tline)
    tline = fgetl(fid01);
    if or(isempty(tline),tline==-1)
    else
    disp(tline)
    tmp=str2num(tline);
    var(n,:)=tmp;
    n=n+1;
    end
end
 
fclose(fid01);



El resultado sería:

1
2
3
4
5
6
7
8
9
>> var
 
var =
 
        2012          49          28          50          76          96          85          35
        2012         NaN          68          96          26          55          26          20
        2012          65          66          35          51         NaN          82          26
        2012          71          17         NaN          70          15          25          62
        2012          76          12          23          90          26         NaN          48



Espero que sea de alguna ayuda.

Saludos
Dave Correa
[email protected]
Servicios de Programación Matlab
http://fismatlab.blogspot.com/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Cargar archivo .COD con Matlab

Publicado por Daiana (4 intervenciones) el 20/01/2013 17:10:24
Sabía de esos comando pero no lograba combinarlos de manera correcta. Muchas gracias por tu ayuda Dave!
Te cuento que implementé el código, pero me salta el siguiente error:

??? Subscripted assignment dimension mismatch.

Error in ==> intento2 at 41
var(n,:)=tmp;


He intentado estableciendo los tamaños de tmp y var pero no consigo solucionarlo. A qué se debe ese error? Por lo que entiendo es por los rangos de ambas variables, pero no se me ocurre cómo arreglarlo.
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
Imágen de perfil de Dave
Val: 497
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Cargar archivo .COD con Matlab

Publicado por Dave (1094 intervenciones) el 20/01/2013 18:07:38
Hola Daiana;

Le código que he desarrollado es para el caso en todas las filas de datos tienen el mismo numero de columnas. Quizás es error se debe a que estás tratando de leer filas de diferentes tamaño de columnas.

Si deseas, me puedes envíar un archivo de tus datos a manera de ejemplo a mi correo ([email protected]) y veo que se puede hacer.

Espero que sea de alguna ayuda.

Saludos
Dave Correa
[email protected]
Servicios de Programación Matlab
http://fismatlab.blogspot.com/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Cargar archivo .COD con Matlab

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 21/01/2013 18:08:40
Yo también lo había pedido al usuario que envie parte de archivo de datos a mi correo pero no lo ha hecho, por eso no le puedo ayudar con precisión en su pregunta, que ha hecho en el foro.


Saludos.
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
programador en matlab
Servicios de programación matlab
[email protected]

http://matlabcaballero.blogspot.com
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