Matlab - extraer datos de un txt

 
Vista:

extraer datos de un txt

Publicado por gerardo (1 intervención) el 29/04/2013 14:59:56
Hola, tengo el siguiente fichero .txt

1
2
3
4
5
6
7
8
9
10
11
12
13
}
    Line {
      SrcBlock		      "dd"
      SrcPort		      1
      DstBlock		      "nor"
      DstPort		      2
    }
    Line {
      SrcBlock		      "ee"
      SrcPort		      1
      DstBlock		      "dd"
      DstPort		      1
    }


Quisiera saber como podria extraer los datos que estan a partir de line, y que me quedase algo estilo matriz tal que asi:

dd 1 nor 2
ee 1 dd 1


Es decir, los datos que estan en el txt ordenados de esa forma. (ese fragmento que he puesto arriba se encuentra en medio de mas texto, y por supuesto, los valores que he indicado arriba pueden variar dependiendo del fichero, pero siempre respetando esa estructura y los mismos titulos)

Un saludo y gracias por vuestra ayuda.
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
sin imagen de perfil
Val: 6
Ha aumentado su posición en 9 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

extraer datos de un txt

Publicado por Miriam (14 intervenciones) el 29/04/2013 19:07:20
Hola Gerardo


Para leer un archivo txt,

dat=load('Nombre_Archivo.txt');

esto, si es ARCHIVO DE NUMEROS

columna1=dat(:,1);
columna2=dat(:,2);

si es texto, utiliza lo siguiente::::::::::::

fdat=fopen(Nombre_Archivo,'rt');

nline=fgetl(fdat); %primera linea
nline=fgetl(fdat); %segunda linea

%asi sucesivamente - utiliza un ciclo for

Espero te haya servido mi ayuda
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

extraer datos de un txt

Publicado por gerardo (1 intervención) el 29/04/2013 19:22:09
Hola Miriam, gracias por tu respuesta.

Pero:

Como podria leer solo determinadas lineas del .txt
Por ejemplo, leer las lineas que empiecen por srcblock, srcport o dstblock? y no tener en cuenta las demas.

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
sin imagen de perfil
Val: 6
Ha aumentado su posición en 9 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

extraer datos de un txt

Publicado por Miriam (14 intervenciones) el 30/04/2013 01:26:16
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
fdat=fopen('Nombre_Archivo.txt','rt');
 
 
    Lineas = {};
    while ~feof(fdat)
        linea=fgetl(fdat);       %Lee cada linea del archivo
        Lineas{end+1,1}=linea;  %Matriz de las líneas
 
        if linea(1:8) == 'SrcBlock'
             %lo que necesito  leer                
        elseif linea(1:7) == 'SrcPort'
             %lo que necesito leer
        elseif linea(1:8) == 'DstBlock'
             %lo que necesito leer
        else
              %engloba todo lo demas
        end
 
    end


Espero resuelva tus dudas
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

extraer datos de un txt

Publicado por gerardo (5 intervenciones) el 07/05/2013 20:41:39
Hola, al ejecutarlo me sale lo siguiente:

??? Index exceeds matrix dimensions.

Error in ==> SIMULACION_pruebas>pushbutton1_Callback at 86
if linea(1:8) == 'SrcBlock' %lo que necesito leer


A que puede ser debido?
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

extraer datos de un txt

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 08/05/2013 04:47:01
Muy poca informacion estas brindando, deberías poner mas líneas de datas, por ejemplo 40 líneas de datas, eso daría mayor visión de la forma de tu data, razón por la cual no he contestado tu pregunta.
Pero debes poner tu data real, ya que muchas personas no ponen sus datas reales, sino uno parecido y eso ocasiona que los códigos que se ponen en el foro no le sirva.
Mira este data se parece mucho a la data que estas poniendo.
http://www.lawebdelprogramador.com/foros/Matlab/1381486-crear_una_matriz_a_partir_de_un_txt.html


Saludos.
JOSE JEREMÍAS CABALLERO
Asesorías en Matlab
programador en matlab
Servicios de programación matlab
[email protected]

http://matlabcaballero.blogspot.com

http://www.lawebdelprogramador.com/foros/Matlab/1371532-FORMA_DE_APRENDER_MATLAB.html
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

extraer datos de un txt

Publicado por gerardo (5 intervenciones) el 08/05/2013 11:58:37
Hola Jose Jeremias:

El hilo al que haces referencia, es igual a este, solo que no sabia como editarlo para modificar un valor y he creado uno nuevo.

El fichero txt seria siempre con el mismo formato, es decir:

Name "C1"
Labels [3, 0]
SrcBlock "nor2"
SrcPort 1
Points [10, 0; 0, 10]
DstBlock "inv1"
DstPort 1

Esa estructura se podria repetir entre 1 e infinitas veces, y solo cambiarian los valores a los que hacen referencia los encabezados de cada linea.

Un saludo y gracias por la respuesta
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

extraer datos de un txt

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 08/05/2013 15:47:11
Abre tu archivo de texto y copia y pégalo al foro. Luego usa la opción de insertar código ( rueda dentada del foro), para que no pierda el formato de tu archivo de texto.
Como estas trabajando con un archivo de texto, tienes que ser muy puntual y preciso con tu informacion.
ejemplo:
este archivo1 contiene el texto:
1
jose jeremias caballero


este achivo2 contiene el texto:
1
jose jeremias   caballero



ambos archivos son distintos para matlab

Saludos.
JOSE JEREMÍAS CABALLERO
Asesorías en Matlab
programador en matlab
Servicios de programación matlab
[email protected]

http://matlabcaballero.blogspot.com

http://www.lawebdelprogramador.com/foros/Matlab/1371532-FORMA_DE_APRENDER_MATLAB.html
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

extraer datos de un txt

Publicado por gerardo (5 intervenciones) el 08/05/2013 16:11:52
Hola. te adjunto un fichero tipo completo (aunque en otros casos el numero de bloques podria variar)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
}
    Line {
      Name		      "A1"
      Labels		      [0, 1]
      SrcBlock		      "inv2"
      SrcPort		      1
      DstBlock		      "nor1"
      DstPort		      1
    }
    Line {
      Name		      "B1"
      Labels		      [0, 0]
      SrcBlock		      "nor1"
      SrcPort		      1
      DstBlock		      "nor2"
      DstPort		      1
    }
    Line {
      Name		      "C1"
      Labels		      [3, 0]
      SrcBlock		      "nor2"
      SrcPort		      1
      Points		      [10, 0; 0, 10]
      DstBlock		      "inv1"
      DstPort		      1
    }
    Line {
      Name		      "D1"
      Labels		      [0, 0]
      SrcBlock		      "inv1"
      SrcPort		      1
      Points		      [15, 0; 0, -10]
      DstBlock		      "nand30"
      DstPort		      1
    }
    Line {
      Name		      "A"
      Labels		      [0, 0]
      SrcBlock		      "pwl"
      SrcPort		      1
      DstBlock		      "inv2"
      DstPort		      1
    }
    Line {
      Name		      "A2"
      Labels		      [0, 0]
      SrcBlock		      "pulse"
      SrcPort		      1
      Points		      [25, 0; 0, -70]
      DstBlock		      "nor1"
      DstPort		      2
     }


el formato de la matriz seria:


Name srcblock dstblock
Name srcblock dstblock
Name srcblock dstblock
.....
....


Un saludo!

PD-un detalle que se me olvido comentar es que si se pudiese, me gustaria que se omitisen las comillas que rodean a cada dato, a la hora de hacer la matriz
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

extraer datos de un txt

Publicado por JOSE JEREMIAS CABALLERO (4 intervenciones) el 08/05/2013 16:29:09
Humm estoy viendo que tu pregunta original es muy distinta a la pregunta que haces al final.
En conclusión nose esta claro tu pregunta.

Saludos.
JOSE JEREMÍAS CABALLERO
Asesorías en Matlab
programador en matlab
Servicios de programación matlab
[email protected]

http://matlabcaballero.blogspot.com

http://www.lawebdelprogramador.com/foros/Matlab/1371532-FORMA_DE_APRENDER_MATLAB.html
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

extraer datos de un txt

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 08/05/2013 16:48:54
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

extraer datos de un txt

Publicado por gerardo (5 intervenciones) el 08/05/2013 16:54:38
Creo que la pregunta que le he formulado ha sido clara.

Pero si quiere puedo detallarle alguna parte.

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
sin imagen de perfil
Val: 6
Ha aumentado su posición en 9 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

extraer datos de un txt

Publicado por Miriam (14 intervenciones) el 13/05/2013 18:22:10
fdat=fopen('Nombre del archivo.txt','rt');

b=[];
c=[];
d=[];

while ~feof(fdat)
linea=fgetl(fdat);


if length(linea) >= 12



if linea(1:13) == ' SrcBloc'
%lo que necesito leer
b=[b ; linea(24:27)]
elseif linea(1:13) == ' SrcPort'
%lo que necesito leer
c=[c ; linea(22:22)]
elseif linea(1:13) == ' DstBloc'
%lo que necesito leer
d=[d ; linea(24:27)]
else
end

else
% disp('ningun caso')
end


end





Intenta este codigo
es el mismo que te habia enviado anteriormente con ciertas modificaciones (esta algo revuelto)
tienes que darte cuenta del tamaño de tus variables siempre.
lo que te habia mando era el esqueleto, tu tenias que intentarle


Si tienes alguna duda vuelve a preguntarme.

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