How to keep the previous iteration in a for loop?

25 views (last 30 days)
Dear Reader,
I am trying to use a for loop to find the maximum daily value for water level (WL) for a hourly data set between the years 2000 and 2020. The code has been specifically written to also take shorter months (february) in to account. See below.
I want the line WL_HVH_dailymax_total a matrix keeping the [year month day WL], for example
[2000 01 01 WL; 2000 01 02 120 WL; 2000 01 03 WL ]
However, the way I have written this, it will overwrite the previous line so that the only result I obtain is:
[2020 06 05 125]
DO I need an extra line of code, or what other way can I fix this?
for i = 2000:max(WL_HVH(:,1));
WL_HVH_year = WL_HVH(WL_HVH(:,1)==i, :);
for j = 1:max(WL_HVH_year(:,2));
WL_HVH_month = WL_HVH_year(WL_HVH_year(:,2)==j, :);
for k = 1:max(WL_HVH_month(:,3));
WL_HVH_day = WL_HVH_month(WL_HVH_month(:,3)==k, :);
WL_HVH_dailymax = max(WL_HVH_day(:,6));
WL_HVH_dailymax_total = [i j k WL_HVH_dailymax];
end
end
end

Accepted Answer

David Hill
David Hill on 6 Jun 2020
count=1;
for i = 2000:max(WL_HVH(:,1));
WL_HVH_year = WL_HVH(WL_HVH(:,1)==i, :);
for j = 1:max(WL_HVH_year(:,2));
WL_HVH_month = WL_HVH_year(WL_HVH_year(:,2)==j, :);
for k = 1:max(WL_HVH_month(:,3));
WL_HVH_day = WL_HVH_month(WL_HVH_month(:,3)==k, :);
WL_HVH_dailymax = max(WL_HVH_day(:,6));
WL_HVH_dailymax_total{count} = [i j k WL_HVH_dailymax];%make cell array
count=count+1;
end
end
end
  3 Comments

Sign in to comment.

More Answers (0)

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!