How to keep the previous iteration in a for loop?

7 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)

Community Treasure Hunt

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

Start Hunting!