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

Ich weiß, das ist ein dummer Code, aber ich verstehe nicht, wie diese While-Schleife gebrochen wird. Ich möchte, dass eine Schleife existiert, bis alle Zähler 0 werden, d. H. Zähler = [0 0 0 0 0] nicht nur einer von ihnen.Wie kann diese While-Schleife unterbrochen werden?

Kann jemand sagen, warum diese Schleife gebrochen wird und while-Schleife schreiben, die meine ursprüngliche Absicht hat?

+1

[Docs] (https://www.mathworks.com/help/matlab/ref/while.html#bub68r8-11): "Wenn der Bedingungsausdruck zu einer Matrix ausgewertet wird, wertet MATLAB die Anweisungen nur für alle Elemente aus in der Matrix sind true (ungleich Null). Um Anweisungen auszuführen, wenn ein Element wahr ist, umschließen Sie den Ausdruck in der 'any'-Funktion." – TroyHaskin

Antwort

0

Diese Linie

counter(1) = 0; 

ist ein Problem. Sie ändern nur das eine Element von counter. Sie müssen Ihrer Schleife eine Art Code hinzufügen, der alle Elemente von counter auf Null setzen kann oder Sie können mit einer Endlosschleife enden.

Zusätzlich müssen Sie counter(1:5)~=zeros(1,5) zuCändern, da TroyHask bereits kommentiert wurde, so dass es weiter läuft, bis alle Elemente von counter Null sind.

Verwandte Themen