Matlab - leer datos de una archivo .txt separados por punto y coma

 
Vista:

leer datos de una archivo .txt separados por punto y coma

Publicado por Antonio Jesús (11 intervenciones) el 18/07/2012 14:53:25
Hola,

mi nombre es Antonio. Dispongo de una base de datos con el formato que muestro:

2511;105;501;MEDIDA SENSOR 2;-8.1;2010-01-28 12:33:13;
2511;105;500;MEDIDA SENSOR 1;-6.06873;2010-01-28 12:43:36;
2511;105;502;MEDIDA SENSOR 3;28.321;2010-01-28 12:44:04;
2511;105;500;MEDIDA SENSOR 1;8.03765;2010-01-28 13:21:56;
2511;105;502;MEDIDA SENSOR 3;28.321;2010-01-28 13:22:16;
2511;103;500;MEDIDA SENSOR 1;-6.18584;2010-01-28 13:47:24;
2511;103;502;MEDIDA SENSOR 3;22.8784;2010-01-28 13:47:44;
2511;105;500;MEDIDA SENSOR 1;7.65185;2010-01-28 13:49:33;
2511;105;502;MEDIDA SENSOR 3;28.321;2010-01-28 13:49:53;
2511;103;500;MEDIDA SENSOR 1;-6.06873;2010-01-28 14:04:48;
2511;103;502;MEDIDA SENSOR 3;23.2258;2010-01-28 14:05:08;
2511;105;500;MEDIDA SENSOR 1;7.77991;2010-01-28 14:07:21;

Y me interesaría tener separado por columna cada uno de los valores que hay entre cada punto y coma. El problema adicional es que a veces la longitud de cada fila es distinta, porque algunos de los valores que hay entre cada punto y como tiene por ej. distinto nº de decimales.

¿alguien me podría ayudar a leer estos datos?

Gracias de antemano,

Antonio
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

leer datos de una archivo .txt separados por punto y coma

Publicado por Lida (4 intervenciones) el 22/07/2012 00:36:54
Hola Antonio,

yo tuve que hacer esto tambien, la diferencia es que en mi caso los datos estaban separados por comas, pero bueno es casi lo mismo. Te explico lo primero que deberías hacer es con la funcion importdata cargar el archivo en cuestión. Seguramente tengas que poner el path en el que se encuentra, mira que forma tiene en el help. Seguramente esta funcion te meta todos los datos en plan bestia, sin separarte los distintos campos marcados con el punto y coma. Bueno pues entonces lo que yo hice es utilizar la funcion regexpi y pedirle que me detectara las comas (en tu caso los puntos y comas). Esta funcion te devolvera las posiciones donde se encuentran tus puntos y comas. Luego solo te quedara hacer un for para ir metiendo en otra variable. Ah y ojo, la primera no puede ir en el for, seria desde la posicion 0, hasta la posicion del primer punto y coma.

Espero que te sirva!

Lida
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

leer datos de una archivo .txt separados por punto y coma

Publicado por Antonio (11 intervenciones) el 23/07/2012 19:36:31
Hola Lida,

Gracias por tu respuesta.

Segui tus pasos, pero siento decirte que soy algo novato con matlab y no demasiado rápido cogiendo las cosas.

Importé los datos con el comando "importdata", y me cargó los datos separados por ";".
Luego apliqué el comando "regexp", y me devolvío un array cell con 6 posiciones por fila donde están los puntos y coma, pero no entiendo, ni he conseguido, avanzar en adelante.

O sea, yo hice:

clear all
close all
clc

dato=importdata('medidas.csv');
posicion=regexp(dato, ';', 'match');

Por ejemplo, "medidas.csv" puede ser el archivo con los datos que había en el primer mail guardados en un documento llamado "medidas.csv".

¿A qué te refieres con un for para ir metiendo en otra variable? es que no me queda claro.

Sin pretender abusar de tu confianza, ¿ podrías escribirme la síntesis del for o bien si me copias un par de líneas de la forma de tus datos y el código con que lo leiste?

Los datos que te mostraba antes son datos de humedad de suelo (soy Ing. Agrónomo) medidos por un sensor cada 5 mins, pero la forma conque los almacena es un tanto rara.

Muchas muchas gracias Lida,

Antonio
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

leer datos de una archivo .txt separados por punto y coma

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 25/07/2012 03:33:05
%
% Hola,
% mi nombre es Antonio. Dispongo de una base de datos con el formato que muestro:
%
% 2511;105;501;MEDIDA SENSOR 2;-8.1;2010-01-28 12:33:13;
% 2511;105;500;MEDIDA SENSOR 1;-6.06873;2010-01-28 12:43:36;
% 2511;105;502;MEDIDA SENSOR 3;28.321;2010-01-28 12:44:04;
% 2511;105;500;MEDIDA SENSOR 1;8.03765;2010-01-28 13:21:56;
% 2511;105;502;MEDIDA SENSOR 3;28.321;2010-01-28 13:22:16;
% 2511;103;500;MEDIDA SENSOR 1;-6.18584;2010-01-28 13:47:24;
% 2511;103;502;MEDIDA SENSOR 3;22.8784;2010-01-28 13:47:44;
% 2511;105;500;MEDIDA SENSOR 1;7.65185;2010-01-28 13:49:33;
% 2511;105;502;MEDIDA SENSOR 3;28.321;2010-01-28 13:49:53;
% 2511;103;500;MEDIDA SENSOR 1;-6.06873;2010-01-28 14:04:48;
% 2511;103;502;MEDIDA SENSOR 3;23.2258;2010-01-28 14:05:08;
% 2511;105;500;MEDIDA SENSOR 1;7.77991;2010-01-28 14:07:21;
%
% Y me interesaría tener separado por columna cada uno de los valores que hay entre cada punto y coma. El problema adicional es que a veces la longitud de cada fila es distinta, porque algunos de los valores que hay entre cada punto y como tiene por ej. distinto nº de decimales.
%
% ¿alguien me podría ayudar a leer estos datos?
%
% Gracias de antemano,
%
% Antonio

clear all
a=importdata('data.txt', ' ')
b=cell2mat(strfind(a,';'));
for n=1:size(b,1)
for k=1:size(b,2)
if k==1
ini=0;
final=b(n,k);
else
ini=b(n,k-1);
final=b(n,k);
end
matriz{n,k}=a{n}(ini+1:final-1);
end
end
for i=1:size(matriz,2)
matriz(:,i)
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
EJECUCION
>> srt2find1
 
a =
 
    '2511;105;501;MEDIDA SENSOR 2;-8.1;2010-01-28 12:33:13;'
    '2511;105;500;MEDIDA SENSOR 1;-6.06873;2010-01-28 12:43:36;'
    '2511;105;502;MEDIDA SENSOR 3;28.321;2010-01-28 12:44:04;'
    '2511;105;500;MEDIDA SENSOR 1;8.03765;2010-01-28 13:21:56;'
    '2511;105;502;MEDIDA SENSOR 3;28.321;2010-01-28 13:22:16;'
    '2511;103;500;MEDIDA SENSOR 1;-6.18584;2010-01-28 13:47:24;'
    '2511;103;502;MEDIDA SENSOR 3;22.8784;2010-01-28 13:47:44;'
    '2511;105;500;MEDIDA SENSOR 1;7.65185;2010-01-28 13:49:33;'
    '2511;105;502;MEDIDA SENSOR 3;28.321;2010-01-28 13:49:53;'
    '2511;103;500;MEDIDA SENSOR 1;-6.06873;2010-01-28 14:04:48;'
    '2511;103;502;MEDIDA SENSOR 3;23.2258;2010-01-28 14:05:08;'
    '2511;105;500;MEDIDA SENSOR 1;7.77991;2010-01-28 14:07:21;'
 
 
ans =
 
    '2511'
    '2511'
    '2511'
    '2511'
    '2511'
    '2511'
    '2511'
    '2511'
    '2511'
    '2511'
    '2511'
    '2511'
 
 
ans =
 
    '105'
    '105'
    '105'
    '105'
    '105'
    '103'
    '103'
    '105'
    '105'
    '103'
    '103'
    '105'
 
 
ans =
 
    '501'
    '500'
    '502'
    '500'
    '502'
    '500'
    '502'
    '500'
    '502'
    '500'
    '502'
    '500'
 
 
ans =
 
    'MEDIDA SENSOR 2'
    'MEDIDA SENSOR 1'
    'MEDIDA SENSOR 3'
    'MEDIDA SENSOR 1'
    'MEDIDA SENSOR 3'
    'MEDIDA SENSOR 1'
    'MEDIDA SENSOR 3'
    'MEDIDA SENSOR 1'
    'MEDIDA SENSOR 3'
    'MEDIDA SENSOR 1'
    'MEDIDA SENSOR 3'
    'MEDIDA SENSOR 1'
 
 
ans =
 
    '-8.1'
    '-6.06873'
    '28.321'
    '8.03765'
    '28.321'
    '-6.18584'
    '22.8784'
    '7.65185'
    '28.321'
    '-6.06873'
    '23.2258'
    '7.77991'
 
 
ans =
 
    '2010-01-28 12:33:13'
    '2010-01-28 12:43:36'
    '2010-01-28 12:44:04'
    '2010-01-28 13:21:56'
    '2010-01-28 13:22:16'
    '2010-01-28 13:47:24'
    '2010-01-28 13:47:44'
    '2010-01-28 13:49:33'
    '2010-01-28 13:49:53'
    '2010-01-28 14:04:48'
    '2010-01-28 14:05:08'
    '2010-01-28 14:07:21'




Saludos.
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
programador en matlab
Servicios de programacion 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

leer datos de una archivo .txt separados por punto y coma

Publicado por antonio (11 intervenciones) el 25/07/2012 08:39:02
Hola José Jeremías,

Muchas gracias por tu ayuda. No conocía la orden "cell2mat". De hecho me va a servir también para otro archivo que no sabía como leerlo y lo que hacía era irlo separando copiándolo a trozos en excel.

Muchas muchas gracias de veras.

Muchas gracias a tí también Lida.

Saludos, y siempre a vuestra disposición.

Antonio
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

leer datos de una archivo .txt separados por punto y coma

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 25/07/2012 17:32:49
De nada Antonio.
Estamos para apoyar en lo que podemos.
Ah disculpa por la demora en contestarte, ya que estaba ocupado enseñando en la universidad y no me daba un tiempo para poder contestar las preguntas del foro.
Ahora que estoy un poco más libre, me he dado un salto para poder contestar algunas preguntas.

Saludos.
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
programador en matlab
Servicios de programacion 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

leer datos de una archivo .txt separados por punto y coma

Publicado por Lida (4 intervenciones) el 01/08/2012 23:21:35
Hola,

perdón por la desconexion pero es que creia que me iba a llegar notificacion al mail y ya he visto que no. Es mucho mas facil, como ya te habrás dado cuenta, como ha hecho jose. En mi caso era un poco más rollo porque no solo debia distinguir entre comas si no tambien entre otros elementos. Pero tampoco sabia para que servia cell2mat.

En fin, al final hemos aprendido algo los dos.

Saludos

Lida
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

leer datos de una archivo .txt separados por punto y coma

Publicado por Maria (2 intervenciones) el 29/10/2012 21:25:15
Hola Yo tengo un problema similar, un poco mas sencillo.
tengo un encabezado que esta dividido por comas(,), y lo que quiero es tener en un arreglo de una columna con muchas filas cada informacion que esta separada por comas.
Por ejemplo:
A='"fecha","Lugar","Institución","Hora";
la longitud de la informacion contenida en A varia.

Y lo que quiero obtener es:
B{1,1}='fecha';
B{2,1}='Lugar;
B{3,1}='Institución';
y asi sucesivamente con los datos que se encuentren en A.

Trate de hacerlo con strfind para encontrar los lugares de las comas, y despues sscanf, pero no resulto,Tambien con el while hasta encontrar una coma y no se que hago mal pero no me sale.
Gracias!
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

leer datos de una archivo .txt separados por punto y coma

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 18/12/2012 16:19:03
Tu pregunta no es clara Maria.
El dato de encabezado A='"fecha","Lugar","Institución","Hora"; donde ese encuentra ?.
en Un archivo tipo texto, tipo xlsx, u otro tipo de archivo.

Adema ese encabezado es tal como lo estas mostrando o las comillas tu lo haz puesto.

Varias dudas que tuve sobre tu pregunta, hizo que no contestara en el momento que hiciste tu pregunta.

conclusión: tu pregunta no es clara.

El objetivo es darte una sugerencia adecuada y no darte por darte una sugerencia para salir de paso, pero para ello necesito que los usuarios hagan su preguntas claras y puntuales, y si es posible pongan ejemplos concretos, al momento de hacer sus preguntas.


Saludos.
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
programador en matlab
Servicios de programacion 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

como leer archivos de hora y fecha en matlab

Publicado por DEcker (1 intervención) el 04/04/2014 07:30:47
Hola!!!
tengo un problema...tengo un archivo de datos:
"TOA5","CR1000_SEDCAM","CR1000","11121","CR1000.Std.13","CPU:humedad.CR1","53575","Table1"
"TIMESTAMP","RECORD","Batt_Volt_Avg","AirTC","RH","Rain_mm_Tot","WS_ms","WindDir","Solar_kW","Solar_kJ_Tot"
"TS","RN","Volts","Deg C","%","mm","meters/second","Degrees","kW/m²","kJ/m²"
"","","Avg","Smp","Smp","Tot","Smp","Smp","Smp","Tot"
"2014-03-31 17:05:00",346623,11.75,16.97,46.65,0,0,325.4,"NAN","NAN"
"2014-03-31 17:10:00",346624,11.74,17.14,46.61,0,0,322.6,"NAN","NAN"
"2014-03-31 17:15:00",346625,11.73,23.67,85.2,0,0,322.6,"NAN","NAN"
"2014-03-31 17:20:00",346626,11.73,17.76,75.36,0,0,322.6,"NAN","NAN"
"2014-03-31 17:25:00",346627,11.72,17.08,73.25,0,0,322.6,"NAN","NAN"
"2014-03-31 17:30:00",346628,11.72,17.59,73.25,0,0,322.6,"NAN","NAN"
"2014-03-31 17:35:00",346629,11.71,17.56,73.05,0,0,322.6,"NAN","NAN"
"2014-03-31 17:40:00",346630,11.71,17.76,72.44,0,0,322.6,"NAN","NAN"
"2014-03-31 17:45:00",346631,11.71,19.05,83.1,0,0,322.5,"NAN","NAN"
"2014-03-31 17:50:00",346632,11.71,18.23,79.16,0,0,322.6,"NAN","NAN"
"2014-03-31 17:55:00",346633,11.71,17.82,76.41,0,0,322.6,"NAN","NAN"
"2014-03-31 18:00:00",346634,11.71,17.52,74.23,0,0,322.6,"NAN","NAN"
"2014-03-31 18:05:00",346635,11.71,17.32,72.61,0,0,322.6,"NAN","NAN"
"2014-03-31 18:10:00",346636,11.71,17.18,71.18,0,0,322.5,"NAN","NAN"
"2014-03-31 18:15:00",346637,11.71,17.01,69.82,0,0,322.6,"NAN","NAN"
"2014-03-31 18:20:00",346638,11.71,16.87,69,0,0,322.6,"NAN","NAN"
"2014-03-31 18:25:00",346639,11.71,16.74,68.25,0,0,322.6,"NAN","NAN"

soy nuevo en el programa matlab y no puedo graficar la fecha y la hora en función de las otras variables...
muchas gracias de antemano por su ayuda
un abrazo
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

como leer archivos de hora y fecha en matlab

Publicado por fred (1 intervención) el 19/04/2016 00:42:58
holaa...tengo un problema exactamente igual, pudiste solucionarlo?, si tu respuesta es si, me gustaria saber como se hace para poder graficar cada columna ..gracias
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