How to keep the previous iteration in a for loop?
    6 次查看(过去 30 天)
  
       显示 更早的评论
    
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 个评论
采纳的回答
  David Hill
      
      
 2020-6-6
        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 个评论
  David Hill
      
      
 2020-6-6
				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
更多回答(0 个)
另请参阅
类别
				在 Help Center 和 File Exchange 中查找有关 Dynamic System Models 的更多信息
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

