2016-12-26 24 views
1

我有一個數組a=[1 2 3 4 5 6 7 8 9];。 我想執行一個while循環,它對數組a執行一些操作,直到數組a中的所有元素均爲零。 我該怎麼做?而所有零陣列在條件下

例如:

a=[1 2 3 4 5 6 7 8 9]; 

while(a contains all zero elements) 
    do some operations on a 
end 

while環路a應該是a=[0 0 0 0 0 0 0 0 0]的結束。

回答

2

你只需要使用any功能:

while any(a) 
    %...operations... 
end 
+0

我試過使用任何,但它進入無限循環 – user7341333

+2

@ user7341333:那麼這意味着'a'中的內容仍然不爲零。你在處理浮點值嗎?如果是這樣,你可能會得到'a'值非常接近零,但不是*完全*零。看看這個問題:[爲什麼24.0000不等於24.0000在MATLAB?](http://stackoverflow.com/q/686439/52738) – gnovice

+1

@ user7341333如果你得到一個無限循環,你的操作不是將所有元素設置爲零。我會建議使用調試器來執行此操作(請記住gnovice關於浮點的警告)。 – beaker

0

在這種情況下,你可以通過 '而' 模仿 'for' 循環:

i = length(a); 
j = 1; 
while j<=i 
    a(1,j) = 0; 
    j = j + 1; 
end 

或簡單地說,你可以做作爲gnovice建議:

j= 1; 
while any(a) 
    a(j)=0; 
    j = j+1; 
end 
+0

Thankyou非常gnovice你是正確的是在循環中不等於零 – user7341333