簡體   English   中英

用Matlab在循環內更改循環

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM