Loop to check if 2 conditions are true for values 1:n, (1:n)+1, (1:n)+2, etc. in a vector and save ID

1 view (last 30 days)
Hi everyone,
I have a time series of daily precipitation (i.e. a vector of 365x1) and I would like to test 2 conditions :
  • is the cumulative rainfall over 7 days > threshold (e.g. 10mm)
  • are there at least 4 out of 7 days with precipitation (RF > 0mm)
I want to make a loop to take values 1:7, check whether the 2 conditions above are met, go to 2:8, 3:9, etc., until the first occurrence of a 7-days period for which both conditions are met. Then save the ID of the last day of the 7-days period (e.g. if the conditions are met first for 43:49, save the ID of interest is 49, I don't care about the value in the vector, only the ID).
I have no idea how to even start or what function to use, so any help is welcome.
Thanks !

Accepted Answer

Torsten
Torsten on 16 May 2022
for i=1:365-7+1
period = rainfall(i:i+6);
sum_period = sum(period);
n = numel(find(period>0));
if sum_period > threshold && n >= 4
ID = i+6;
break
end
end

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by