Matlab - encontrar indices de una serie de tiempo

 
Vista:
sin imagen de perfil

encontrar indices de una serie de tiempo

Publicado por Alin (5 intervenciones) el 22/06/2015 20:52:15
Hola a tod@s, necesito un poco de su ayuda

Tengo una serie de tiempo de Temperatura ambiente con su respectivo tiempo, cada 15 minutos, estoy calculando los valores máximos de cada hora, pero necesito también encontrar los indices de tiempo para cada máximo, y no logro encontrar esos indices


1
2
3
4
5
6
c=1
for i=1:4:length(tem)-4
    max_tem(c)=max(tem(i:i+3));
    index=find(tem(i:i+3) == max(tem(i:i+3))); max_time(c)=time(index);
    c=c+1;
end





max_tem que es el valor máximo de cada hora me sale bien, pero el max_time no :(
si alguien puede ayudarme a resolverlo, se lo agradezco
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 Royeth
Val: 3.309
Plata
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

encontrar indices de una serie de tiempo

Publicado por Royeth (1818 intervenciones) el 23/06/2015 03:06:07
revisa la matriz time que es lo único que debe estar diferente en tu código, si quieres puedes adjuntar tus archivos aquí y con gusto puedo ayudarte, saludos
https://www.facebook.com/royethmatlab/
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
sin imagen de perfil

encontrar indices de una serie de tiempo

Publicado por Alin (5 intervenciones) el 23/06/2015 18:02:42
Hola, muchas gracias por responder
A qué te refieres con que mi time debe estar diferente?
Adjunto mis vectores
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 Royeth
Val: 3.309
Plata
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

encontrar indices de una serie de tiempo

Publicado por Royeth (1818 intervenciones) el 23/06/2015 19:18:34
a las unidades hice diff(time) y los intervalos de tiempo dan alrededor de 0.0104166666 , en qué unidades está el tiempo en esa matriz??? , de todas maneras sí era lo que decía y me imaginaba: estás haciendo :
1
find(tem(i:i+3) == max(tem(i:i+3)))
ahí estàs fragmentando la matriz tem es decir que el índice que matlab halla siempre estarà entre 1 y 4, porque estás selecconando un pedazo de la matriz y no todo el conjunto , además debes aclararle también que debe encontrar un solo índice para evitar problemas , puede ser una forma asím aunque me parecen raros los datos del tiempo pero bueno tú sabrás :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
clear all
load('datos.mat')
c=1;
d=0;
for i=1:4:length(tem)-4
    max_tem(c)=max(tem(i:i+3));
    index=find(tem(i:i+3)==max_tem(c),1);
    if isempty(index) %da vacía cuando el max_tem es nan
        max_time(c)=nan;
    else
    max_time(c)=time(index+d);
    end
    c=c+1;
d=d+4;
 
end


Y otro consejo aparte , puedes encontrar el máximo y la posicion en una sola línea , de esta forma :
1
2
a=[1 2 4 5]; %ejemplo
[massimo posizione]=max(a);

Saludos
https://www.facebook.com/royethmatlab/
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

encontrar indices de una serie de tiempo

Publicado por Alin (5 intervenciones) el 23/06/2015 20:04:03
uff, eso funciona, muchas gracias!!!

El tiempo esta en números julianos, y ese intervalo de tiempo representa 15 minutos, si haces un datestr(time), verás :)

Saludos, muy buenos consejos
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