Matlab - Fechas de excel incoherentes

   
Vista:

Fechas de excel incoherentes

Publicado por Marta (9 intervenciones) el 10/04/2013 15:48:41
Hola¡


Estoy pasando un fichero con fechas desde excel a matlab y me sale algo totalemente incoherente:

los pasos que sigo son:

1.- [num,txt,raw]=xlsread('marta.xls')

2.- Fechas= datevec(txt);

y las fechas que me salen el Fechas no coinciden con lo que hay en txt. Os dejo una muestra:


txt =

'16/12/2010 11:22:00'
'16/12/2010 11:24:00'
'16/12/2010 11:26:00'
'16/12/2010 11:28:00'
'16/12/2010 11:30:00'
'16/12/2010 11:32:00'
'16/12/2010 11:34:00'
'16/12/2010 11:36:00'
'16/12/2010 11:38:00'

Fechas=

22 6 2 11 22 0
22 6 2 11 24 0
22 6 2 11 26 0
22 6 2 11 28 0
22 6 2 11 30 0
22 6 2 11 32 0
22 6 2 11 34 0
22 6 2 11 36 0
22 6 2 11 38 0


Las horas, minutos y segundos si que coinciden a la perfección, ¿pero que pasa con los años, meses y días?

Me estoy volviendo loca, no entiendo que puede ser¡¡

A ver si conseguís averiguarlo. Gracias¡
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

Fechas de excel incoherentes

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3440 intervenciones) el 10/04/2013 19:46:33
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
>> t
 
t =
 
16/12/2010 11:22:00
16/12/2010 11:24:00
16/12/2010 11:26:00
16/12/2010 11:28:00
16/12/2010 11:30:00
16/12/2010 11:32:00
16/12/2010 11:34:00
16/12/2010 11:36:00
16/12/2010 11:38:00
 
>> fechas=datevec(t,'dd/mm/yyyy HH:MM:SS')
 
fechas =
 
        2010          12          16          11          22           0
        2010          12          16          11          24           0
        2010          12          16          11          26           0
        2010          12          16          11          28           0
        2010          12          16          11          30           0
        2010          12          16          11          32           0
        2010          12          16          11          34           0
        2010          12          16          11          36           0
        2010          12          16          11          38           0



Saludos.
JOSE JEREMÍAS CABALLERO
Asesorías en Matlab
programador en matlab
Servicios de programación matlab
jjcc94@hotmail.com

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

Fechas de excel incoherentes

Publicado por Marta carreno.marta84@yahoo.es (9 intervenciones) el 16/04/2013 14:38:28
Gracias por contestar Jose,
Me sigue dando problemas lo que me dijiste


[num,txt,raw]=xlsread('marta.xls')

txt=

'15/12/2010'
'15/12/2010 0:01:00'
'15/12/2010 0:02:00'
'15/12/2010 0:03:00'
'15/12/2010 0:04:00'
'15/12/2010 0:05:00'
'15/12/2010 0:06:00'
'15/12/2010 0:07:00'
'15/12/2010 0:08:00'
'15/12/2010 0:09:00'
'15/12/2010 0:10:00'
'15/12/2010 0:11:00'


b=datevec(txt,'dd/mm/yyyy HH:MM:SS')
??? Error using ==> dtstr2dtvecmx
Failed on converting date string to date number.

Error in ==> datevec at 124
y = dtstr2dtvecmx(t,icu_dtformat);


No tengo ni idea de que puede ser..he probado trabajar primero con datenum y datestr para luego ver que resultado me da con datevec, y es el siguiente:

n=datenum(txt);
s=datestr(n);

s=
01-Jun-0021 00:00:00
01-Jun-0021 00:01:00
01-Jun-0021 00:02:00
01-Jun-0021 00:03:00
01-Jun-0021 00:04:00
01-Jun-0021 00:05:00
01-Jun-0021 00:06:00
01-Jun-0021 00:07:00
01-Jun-0021 00:08:00
01-Jun-0021 00:09:00
01-Jun-0021 00:10:00
01-Jun-0021 00:11:00

Es decir, Matlab me esta leyendo una fechas que no son las que tengo en el excel.

A que se debe esto?

Gracias, espero que sepáis algo..
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

Fechas de excel incoherentes

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3440 intervenciones) el 16/04/2013 19:39:42
Se observadora, tu pusístes un txt en tu pregunta original y lo hice con ese txt y todo está ok. Y como veras, la salida de la respuesta es correcta.
Pero en la repregunta tu txt haz cambiado, entonces las cosas ya cambian.

Saludos.
JOSE JEREMÍAS CABALLERO
Asesorías en Matlab
programador en matlab
Servicios de programación matlab
jjcc94@hotmail.com

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

Fechas de excel incoherentes

Publicado por Marta (1 intervención) el 17/04/2013 17:49:32
He puesto otro txt por el simple hecho de que esos son algunos de los valores que me están dando fallos...

La tabla excel tiene miles de filas por lo que debo seleccionar datos para mostrearlos

Se os ocurre donde está el fallo?

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

Fechas de excel incoherentes

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3440 intervenciones) el 17/04/2013 18:06:16
para este formato: '16/12/2010 11:22:00' se usa este comando datevec(t,'dd/mm/yyyy HH:MM:SS')
y ese fue pregunta y te contente y todo esta ok.
para este formato: '15/12/2010' se usa este comando datevec(t,'dd/mm/yyyy')

Entonces si tu data tiene ambos formatos entonces tienes que hacer un programa con una condición, de tal manera cuando usar el comando adecuado dependiendo del tipo de formato que tienes. Podrías trabajar con el tamaño de tu formato, usando la función length() para poder detectar que tipo de formato es y de allí, usar el comando adecuado.

En pocas palabras tienes hacer un blucle (for o while) donde dentro de allí usar el comando lenght() y luego usas la condición if, y dentro de la condición if usa datevect(). Y con ese puedes resolver tu problema.


Saludos.
JOSE JEREMÍAS CABALLERO
Asesorías en Matlab
programador en matlab
Servicios de programación matlab
jjcc94@hotmail.com

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

Fechas de excel incoherentes

Publicado por Marta (9 intervenciones) el 18/04/2013 11:31:25
Aquí os dejo la solución:

1
2
3
4
5
6
7
for i=1:length(txt)
    if length(txt{i})==10
        e(i,:)=datevec(txt(i),'dd/mm/yyyy');
    elseif length(txt{i})==18
        e(i,:)=datevec(txt(i),'dd/mm/yyyy HH:MM:SS');
    end
end


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
2
Comentar