2017-07-19 121 views
-1

我有一個程序,所有的功能都在for循環中。如果條件成立,我想跳過一些變量以避免做任何事情。例如:如何跳過for循環的一些迭代並在Matlab中執行其他迭代?

for i=1:a 

     for j=1:b 
     if counter=101 
     %until i<21 do nothing then if i=21 continue the loop and do what I want 
     % until i=23, after that again i goes forward but don't do any thing 
     %until i=44 again do the progress and continue the loop. 
     end 


     %do what I want 

     end 

    end 

但我無法得到正確的答案。 我把它寫下來一樣:

if counter==101 
      j=1; 
      while (i < a/3+1) 
       i=i+1; 
       continue 
      end 
     end 
     if counter==201 
      j=1; 
      while (i < 2*a/3+1) 
       i=i+1; 
       continue 
      end 
     end 

在這段代碼中,I = 21後的循環重複做,之後,在我去號碼前21(例如3),但我不希望它。 如果有人有建議,將不勝感激。

+0

請更正代碼的層次結構 – OmG

回答

3

這種情況應該是你在找什麼:

for i=1:a 
     for j=1:b 
      if i < 21 || (i >= 23 && i < 44) 
       % Skip loop before 21 and between 23 and 43 
       continue 
      end 
      if counter == 101 
       % Do stuff 
      end 
     end 

end 

至少有在你的代碼中的錯誤:if counter=101是不是一個有效的比較,你是分配值101來對抗。你應該使用if counter==101 此外,我不明白你的第二塊代碼。至少,在給它賦值之前使用i,並且可能會丟失外部循環。

編輯: 話雖這麼說,你可能想簡單地調整你的循環變量:

range = [1:20 , 22, 44:a]; 
for i = range 
    % Do stuff 
end