2017-04-03 141 views
0
counter = [2 3 3 4 5]; 
while counter(1:5)~=zeros(1,5) 
    counter(1)=0; 
end 
counter 

我知道這是一個愚蠢的代碼,但我不明白這個while循環如何被破壞。我想要一個循環存在,直到所有的計數器都變爲0,即不是其中的一個,即counter = [0 0 0 0 0]。這個while循環如何被破壞?

有人可以告訴爲什麼這個循環被破壞,並寫有循環,這是我的初衷嗎?

+1

[文檔](https://www.mathworks.com/help/matlab/ref/while.html#bub68r8-11):「如果條件表達式評估爲矩陣,則MATLAB僅在所有元素在矩陣中是真(非零)。如果任何元素爲真,則執行語句,將該表達式包裝在'any'函數中。「 – TroyHaskin

回答

0

此行

counter(1) = 0; 

是一個問題。你只能改變counter的那一個元素。你需要添加一些代碼到你的循環中,它可以將counter中的任何/所有元素設置爲零,否則最終會出現無限循環。

此外,您需要更改counter(1:5)~=zeros(1,5)any(counter(1:5)~=zeros(1,5))作爲TroyHaskin已經評論,這樣它會繼續運行,直到counter所有元素都爲零。