How to keep the previous iteration in a for loop?
    7 views (last 30 days)
  
       Show older comments
    
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
0 Comments
Accepted Answer
  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
  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];%change to matrix
            count=count+1;
        end
    end
end
More Answers (0)
See Also
Categories
				Find more on Dynamic System Models 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!
