Matlab - Posiciones de fechas en cellstr

   
Vista:

Posiciones de fechas en cellstr

Publicado por Jacqueline (40 intervenciones) el 13/04/2016 18:11:49
Hola

Tengo la sgte consulta

Tengo una matriz de celdas que contiene fechas en formato de caracteres desde 1-1-1980 al 31-12-2014, lo que deseo hacer es encontrar la posicion de todos los julios de 1980-2014 ...

Como se podría hacer?

PD: el tamaño de la matriz es 12784 dias
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 Jorge De Los Santos

Posiciones de fechas en cellstr

Publicado por Jorge De Los Santos (212 intervenciones) el 17/04/2016 20:03:44
Hola Jacqueline,


En este caso la solución está en utilizar expresiones regulares para encontrar todas las fechas del tipo 'dd-07-YYYY' o 'dd-7-YYYY' que corresponderían a Julio. Te adjunto un código de ejemplo que implementa lo anterior:

1
2
3
4
5
6
7
fechas = {'10-04-2015','12-07-2015','10-08-2015','1-7-2016'};
pos=[];
for k=1:length(fechas)
    if regexp(fechas{k},'\d{1,2}-0?7-\d{4}')
        pos = [pos,k]; %#ok
    end
end


Obviamente en ese caso remplazarás lo que corresponde con tu cell array. En el vector pos se guardarán todas las posiciones que cumplen con esa condición. Para entender un poco de las expresiones regulares te recomiendo que leas la documentación de MATLAB al respecto.

http://www.mathworks.com/help/matlab/matlab_prog/regular-expressions.html




Saludos.
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

Posiciones de fechas en cellstr

Publicado por Jacqueline (40 intervenciones) el 17/04/2016 20:10:25
Muchas gracias... encontré una forma mas fácil de encontrar las fechas

ocupe una funcion llamada datevec, lo que hace esa funcion es ordenar los datos por columnas (la fechas me las transforma en numeros), entoces si quiero buscar julio seria = al mes 07.. entonces con un find busco todas las fechas de julio.

1
2
3
fecha=(datevec(datenum(1980,01,01):datenum(2014,12,31)));
 
Ind1=find(fecha(:,2)==7); %
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 Jorge De Los Santos

Posiciones de fechas en cellstr

Publicado por Jorge De Los Santos (212 intervenciones) el 18/04/2016 20:41:19
Genial Jacqueline,

De eso se trata esto, buscarle por aquí y por allá, hasta encontrar una solución satisfactoria.

Y por cierto, aclarar que me equivoqué al decir "En este caso la solución está en utilizar expresiones regulares..." , naturalmente lo correcto sería decir: Una solución sería utilizar... . Pero bueno, cosas más, cosas menos.


Saludos.

Jorge De Los Santos.
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