Finding Maximum Consecutive Dry Days in Daily Rainfall Data
Mostra commenti meno recenti
Hi All,
I am trying to find maximum consecutive dry days in a long time series of daily rainfall. I am using a script to do for one year of data. Can somebody help to modify the code such that it counts the Max CDD for each year separately. Whenever the data is less than 0.1, it is considered as dry day.
max_dry = 0; % initialize the maximum number of consecuitive dry days
counter = 0;
for k=1:366
if a(k) == 0
counter = counter + 1;
else
if counter > max_dry
max_dry = counter;
max_dry_position = k - counter;
end
counter = 0;
end
end
2 Commenti
Abderrahim. B
il 5 Lug 2022
your code in incomplete! what is a ?
Faisal Baig
il 5 Lug 2022
Risposta accettata
Più risposte (2)
Saksham Gupta
il 5 Lug 2022
As per my understanding, you need assistance in writing code for your problem.
This code should be helpful as per the conditions shared by you.
max_dry = 0; % initialize the maximum number of consecuitive dry days
counter = 0;
% a is supposed to be having data of each day as vector, I am using length, as year can
% have either 365 or 366 days.
for k=1:length(a)
if a(k) < 0.1 % conditon as mentioned by you
counter = counter + 1;
else
counter = 0;
end
max_dry=max(counter,max_dry);
end
1 Commento
Faisal Baig
il 5 Lug 2022
This code shows one way of finding all the runs of maximum length.
rng(12345)
drf = rand(366,1); % mocking up some daily rainfall-data.
DryDayThresh = 0.2;
drf = reshape(drf, 1, []); %need it to be a row vector
rdc = drf < DryDayThresh; % locate the dry days
starts = strfind([0 rdc], [0 1]);
stops = strfind([rdc 0], [1 0]);
durations = stops - starts + 1;
longest = max(durations)
long_idx = durations == longest;
start_of_longest = starts(long_idx)
end_of_longest = stops(long_idx)
plot(drf);
yline(DryDayThresh)
hold on
%stairs(rdc, 'k')
xline(start_of_longest, 'r')
xline(end_of_longest, 'r')
1 Commento
rng(12345)
drf = rand(366,1); % mocking up some daily rainfall-data.
DryDayThresh = 0.2;
drf = reshape(drf, 1, []); %need it to be a row vector
rdc = drf < DryDayThresh; % locate the dry days
props = regionprops(rdc, 'BoundingBox', 'Area');
durations = [props.Area];
longest = max(durations);
long_idx = durations == longest;
selected_props = props(long_idx);
bounds_of_longest = round(vertcat(selected_props.BoundingBox) + [.5 .5 0 0]);
start_of_longest = bounds_of_longest(:,1)
end_of_longest = start_of_longest + bounds_of_longest(:,3) - 1
plot(drf);
yline(DryDayThresh)
hold on
xline(start_of_longest, 'r')
xline(end_of_longest, 'r')
Categorie
Scopri di più su Dates and Time in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

