Matlab - Ayuda

   
Vista:

Ayuda

Publicado por Jacqueline (40 intervenciones) el 04/09/2015 15:43:43
Estimados

Tengo el sgte problema necesito obtener datos de por ejemplo temperatura cada 1 hora, pero la base de datos que tengo está cada 1 min, estaba pensando en hacer un reshape o un ciclo for que recorra la base de datos y me haga un promedio cada 1 hora, pero no me resulta. Alguno de uds me podría ayudar.

Aqui adjunto el archivo que contiene los datos

Saludos y de ante mano muchas 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 Daniel

Ayuda

Publicado por Daniel (212 intervenciones) el 04/09/2015 17:37:50
Con esto debería andar


1
2
3
4
5
6
clear promvar2
mh=60;
for j=1:size(VarName2)/mh
    promvar2(j)=mean(VarName2((1+(j-1)*mh):j*mh));
end
plot(promvar2)

Comentanos como te fue

Saludos

Daniel
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

Ayuda

Publicado por Jacqueline (40 intervenciones) el 04/09/2015 19:16:08
Muchas gracias

Pero estuve revisando los datos pero me di cuenta que no siempre estan cada 60 min... así q cuando haga el promedio no será el proemdio correcto de la hora...

Estoy tratando de ver si solamente considero el dato registrado en cada hora no más y no complicarme con obtener el promedio cada 60min...

Seguiré intentando alguna forma de poder hacer eso a ver si me resulta...

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

Ayuda

Publicado por Jacqueline (40 intervenciones) el 04/09/2015 19:51:56
Hola Daniel

Muchas gracias por tu ayuda, pero lamentablemente no me resultó, porque estuve revisando los datos y no siempre están cada 60 min, por lo tanto lo que deseo hacer es seleccionar solamente el dato que corresponde a la hora, por ejemplo la temperatura de las 00, 1, 2 .. etc.

Como se podría hacer guardar en una matriz los archivos horarios??

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
Imágen de perfil de Daniel

Ayuda

Publicado por Daniel (212 intervenciones) el 04/09/2015 21:50:31
lo mas practico que se me ocurre es crear una tabla con los datos y sus respectivas fechas cuando los minutos sean iguales a cero (u otro numero de 0 a 59). Por los datos que me pasaste toda la parte del archivo que corresponde a la fecha completa está en formato string (dentro de un cell) por lo que hay que convertirlos.

te dejo el codigo que hace esto


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
clear varmat
 
s=1;
for j=1:size(VarName1)
    k=str2num(VarName1{j}(end-1:end));%min
    if k==0
        varmat(s,1)=str2num(VarName1{j}(1:2));%dia
        varmat(s,2)=str2num(VarName1{j}(4:5));%mes
        varmat(s,3)=str2num(VarName1{j}(7:10));%año
        varmat(s,4)=str2num(VarName1{j}(end-4:end-3));%hora
        varmat(s,5)=VarName2(j);
        varmat(s,6)=VarName3(j);
        varmat(s,7)=VarName4(j);
        varmat(s,8)=VarName5(j);
        varmat(s,9)=VarName6(j);
        s=s+1;
    end
end

en la matriz varmat están todos los datos a las 00 01 02... horas

Espero te sirva y comentanos como te fue

Saludos nuevamente

Daniel
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

Ayuda

Publicado por Jacqueline (40 intervenciones) el 04/09/2015 22:18:35
Hola Daniel

Nuevamente muchas gracias

Mira lo que realmente quiero hacer es lo sgte:

Tengo en total 3 archivos:

1° corresponde a la fecha/hora que deseo obtener con datos c/1hora
2° corresponde a la fecha/hora que en estricto rigor contiene los datos c/1 min
3° corresponde a la temperatura c/1min

Lo que deseo hacer es un ciclo que recorra el 2°archivo y que cuando coincida con los datos c/1 hora que coloque el valor de la temperatura (archivo 3) correspondiente a esa hora. Por ejemplo:

Fecha original c/1hora Fecha datos c/1 min Temp c/1min
00:00 00:00 15
1:00 00:01 11
2:00 00:02 10
3:00 ....... .....

1:00 8
1:01 5.2
1:02 10.3
......
2:00 12
2:01
2:02
....
3:00 15

Entonces tendría 1 contador que revisara dato por dato de la fecha datos c/1min hasta q coincida con la hora de la fecha original y colocara el dato quedando una matriz horaria de temperatura

Fecha/hora (c/1hora) Temp c/1hora
00 15
1:00 8
2:00 12
3:00 15


Algo asi..

Estuve tratando de hacerlo mediante comparacion de fechas transformadas en datenum, viendo la diferecia entre fechas/horas de ambos archivos, entonces cuando no haya diferencia mantendría el valor correspondiente a esa hora sino seguira buscando hasta q ambos datos coinciadan, es decir hasta q la diferencia sea ==0.

Adjunto los archivos y el script haber si alguien o tu me puedes ayudar...

Lo necesito urgenteeeeeeee


Nuevamente agradecida
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