[英]Change loop inside a loop with Matlab
我瀏覽了Matlab手冊和各種帖子,但似乎不適合。 您可以在下面找到有問題的代碼。
我的代碼運行良好,但是,我不確定Year和PartOfYear的循環。 我希望我的代碼針對Year = 2008:2016和PartOfYear = 1:2運行,但是,當Year = 2017時,它應該僅針對PartOfYear = 1運行。即,當Year = 2017時,沒有PartOfYear = 2。有沒有更有效的方法(甚至是正確的方法,因為我的方法可能不正確)? 此刻,我只是嘗試每次在Year = 2017時再次運行PartOfYear = 1,PartOfYear = 2,因此只需將這部分代碼執行兩次,但是我認為它不正確而且效率低下,因為結果似乎離開。
謝謝!
for index = 1:20
StartYearData = 2008;
EndYearData = 2017;
for Year = StartYearData:EndYearData
for PartOfYear = 1:2
if PartOfYear == 1
StartDayData = 1;
StartMonthData = 1;
EndDayData = 30;
EndMonthData = 6;
elseif PartOfYear == 2
StartDayData = 1;
StartMonthData = 7;
EndDayData = 31;
EndMonthData = 12;
% THIS IS THE WAY I USE TO TRY AND FIX MY PROBLEM
% BUT I BELIEVE IT IS WRONG OR AT LEAST INEFFICIENT:
if Year == 2017
PartOfYear = 1; StartDayData = 1; StartMonthData = 1;
EndDayData = 30; EndMonthData = 6;
end
end
% DO A LOT OF THINGS
end
您不能在循環內部更改循環變量。 看起來您只是對循環和if
語句的順序感到困惑。
有很多方法可以實現您的要求。 此代碼應執行所需的操作,並且在Year = 2017
時僅使用PartOfYear = 1
(而不是=1:2
):
for index = 1:20
StartYearData = 2008;
EndYearData = 2017;
for Year = StartYearData:EndYearData
% If the year is 2017, we only want to use PartOfYear=1, otherwise 1:2
if Year == 2017
parts = 1;
else
parts = 1:2;
end
% Now we can loop over the 'parts', which is either 1 or 1:2
for PartOfYear = parts
StartDayData = 1; % This is the same regardless of PartOfYear value
if PartOfYear == 1
StartMonthData = 1;
EndDayData = 30;
EndMonthData = 6;
elseif PartOfYear == 2
StartMonthData = 7;
EndDayData = 31;
EndMonthData = 12;
end
% Stuff...
end
end
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.