How can I track time periods under certain criteria?
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Daphne PARLIARI
am 16 Feb. 2021
Kommentiert: Duncan Po
am 26 Feb. 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 Kommentare
Akzeptierte Antwort
Duncan Po
am 18 Feb. 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 Kommentare
Duncan Po
am 26 Feb. 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
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Get Started with Phased Array System Toolbox finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!