How can I track time periods under certain criteria?
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Daphne PARLIARI
el 16 de Feb. de 2021
Comentada: Duncan Po
el 26 de Feb. de 2021
Hello everyone!
I would appreciate your help on this. I have a dataset of daily counts of temperature (please find attached) for 11 years, 2006-2016.
What I want to do is to find all time periods that demonstrate three or more consecutive days with temperature higher than the 95th percentile (this way I am trying to locate heat waves). I also need the respective dates.
What I have tried so far
m=1;
days=0;
for i = 1: length(Daily_Meteo.Daily_T)
if Daily_Meteo.Daily_T(i)> 28
days = days + 1;
if days >= 3;
HWs(m,:) = Daily_Data.Daily_DATE(i);
m=m+1;
end
end
end
The problem is that HWs(m,:) holds all days with T>28oC, but I want only 3 or more consecutive days...
Thank you in advance!
PS. I am on R2019b.
0 comentarios
Respuesta aceptada
Duncan Po
el 18 de Feb. de 2021
You can put your data in a timetable and then use movsum like this:
tt = readtimetable('Daily_Data_Thessaloniki.xlsx');
tt.threehotdays = (movsum(tt.Daily_T > 28, [2 0]) == 3) ; % find all days when it and the previous 2 days are all above 28 degrees
6 comentarios
Duncan Po
el 26 de Feb. de 2021
Use diff:
d = diff(tt.threehotdays) == 1; % d is 1 at transition from 0 to 1
loc = find(d) + 1; % +1 because diff output starts at 2nd position
Más respuestas (0)
Ver también
Categorías
Más información sobre Get Started with Phased Array System Toolbox en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!