Matlab - recorrer un txt, buscar un interruptor y graficar

 
Vista:
sin imagen de perfil
Val: 23
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

recorrer un txt, buscar un interruptor y graficar

Publicado por Addison (15 intervenciones) el 13/12/2017 22:10:05
De antemano agradezco por toda la ayuda, tengo un archivo de texto con dos columnas separadas con comas, necesito que el programa recorra el archivo de texto y cuando encuentre un % me guarde de la fila 1 hasta ese % todos los datos en un vector, después que siga recorriendo y si encuentra un $ me guarde desde la fila después del % hasta la fila que encontró el $ me lo guarde en otro vector


como podría hacer esto???

mil gracias por su asesoría

Ejemplo

336,334
341,341
329,329 vector 1
323,323
337,338
336,336
340,341
315,316
303,303
347,347
%
339,338
344,345
338,338
288,287
340,340 vector 2
330,330
334,334
337,338
334,335
$
337,336
332,332
337,338
339,340
342,342
344,344 vector 3
344,344
345,345
345,345
340,340
331,331
328,329
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 JOSE JEREMIAS CABALLERO
Val: 8.059
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

recorrer un txt, buscar un interruptor y graficar

Publicado por JOSE JEREMIAS CABALLERO (5779 intervenciones) el 15/12/2017 02:52:24
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
clear all
fid = fopen('archivos_bloques.txt');
tline = fgets(fid);
k=1;
i=1;
while ischar(tline)
v = genvarname(['vector', num2str(k)]);
if length(tline)==3
    k=k+1;
    i=1;
end
 
if length(tline)>=4
    a=str2num(tline);
    eval([v ,'(i,:) =a']);
    i=i+1;
    clc
end
tline = fgets(fid);
 
end
fclose(fid);
 
a=whos('vector*');
for i=1:length(a)
eval(a(i).name)
end


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
vector1 =
   336   334
   341   341
   329   329
   323   323
   337   338
   336   336
   340   341
   315   316
   303   303
   347   347
vector2 =
   339   338
   344   345
   338   338
   288   287
   340   340
   330   330
   334   334
   337   338
   334   335
vector3 =
   337   336
   332   332
   337   338
   339   340
   342   342
   344   344
   344   344
   345   345
   345   345
   340   340
   331   331
   328   329



Saludos
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
Servicios de programación matlab


http://matlabcaballero.blogspot.com
https://www.facebook.com/matlabcaballero
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
sin imagen de perfil
Val: 23
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

recorrer un txt, buscar un interruptor y graficar

Publicado por Addison (15 intervenciones) el 15/12/2017 13:51:31
Como siempre mil gracias por su valiosa ayuda

una ultima pregunta

si en el archivo de texto tengo en la primera linea datos como hacer para que Matlab no la tenga en cuenta

ejemplo:

Datos No. 1 Fecha 12/12/2017

336,334
341,341
329,329
323,323
337,338
336,336
340,341
315,316
303,303
347,347
%
339,338
344,345
338,338
288,287
340,340
330,330
334,334
337,338
334,335
$
337,336
332,332
337,338
339,340
342,342
344,344
344,344
345,345
345,345
340,340
331,331
328,329
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: 8.059
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

recorrer un txt, buscar un interruptor y graficar

Publicado por JOSE JEREMIAS CABALLERO (5779 intervenciones) el 15/12/2017 23:47:27
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
clear all
fid = fopen('archivos_bloques.txt');
tline = fgets(fid);
k=1;
i=1;
while ischar(tline)
    tline = fgets(fid);
v = genvarname(['vector', num2str(k)]);
if length(tline)==3
    k=k+1;
    i=1;
end
 
if length(tline)>=4
    a=str2num(tline);
    eval([v ,'(i,:) =a']);
    i=i+1;
    clc
end
%tline = fgets(fid);
 
end
fclose(fid);
 
a=whos('vector*');
for i=1:length(a)
eval(a(i).name)
end



Saludos
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
Servicios de programación matlab


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

recorrer un txt, buscar un interruptor y graficar

Publicado por Addison Rodriguez C, (15 intervenciones) el 26/12/2017 15:57:13
Mil gracias por su ayuda, pero tengo una duda veo que los valores se guardan en un vector pero como string como puedo hacer para graficarlos por ejemplo no se si se puede graficar los tres vectores en un solo plot y el vector 1 de un color el vector dos de otro color??? Sera muy complejo hacer esto

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

recorrer un txt, buscar un interruptor y graficar

Publicado por JOSE JEREMIAS CABALLERO (5779 intervenciones) el 26/12/2017 16:18:31
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
vector1 =
   336   334
   341   341
   329   329
   323   323
   337   338
   336   336
   340   341
   315   316
   303   303
   347   347
vector2 =
   339   338
   344   345
   338   338
   288   287
   340   340
   330   330
   334   334
   337   338
   334   335
vector3 =
   337   336
   332   332
   337   338
   339   340
   342   342
   344   344
   344   344
   345   345
   345   345
   340   340
   331   331
   328   329
>> whos vector1 vector2 vector3
  Name          Size            Bytes  Class     Attributes
 
  vector1      10x2               160  double
  vector2       9x2               144  double
  vector3      12x2               192  double

No son string, como ud. dice.

Saludos
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
Servicios de programación matlab


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

recorrer un txt, buscar un interruptor y graficar

Publicado por Addison Rodriguez C, (15 intervenciones) el 26/12/2017 22:25:03
perdon por mi equivocacion,

pero como podria graficar cada vector??? por ejemplo no se si se puede graficar los tres vectores en un solo plot y el vector 1 de un color el vector dos de otro color???
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: 8.059
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

recorrer un txt, buscar un interruptor y graficar

Publicado por JOSE JEREMIAS CABALLERO (5779 intervenciones) el 27/10/2018 16:39:57
plot(v1,v2,v3)
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