2016-05-23 6 views
3

funktioniert ich diese einfache Schleife Skript in MATLAB ausgeführt habeMatlab: Aktualisierung max Zählung in einer Schleife nicht

clc;clear; close all; 
m = 100; 
for i = 1:m 
    if(i == 2) 
     m = 1000; 
    end 
end 

und festgestellt, dass 'i' Schleifen nur bis '100', aber nicht '1000'. Warum..??

+1

Lesen Sie über [für] (http://se.mathworks.com/help/matlab/ref/for.html), besonders y der letzte Abschnitt. _Vermeiden Sie die Zuweisung eines Werts zur Indexvariablen innerhalb der Schleifenanweisungen. Die for-Anweisung überschreibt alle Änderungen, die am Index innerhalb der Schleife vorgenommen werden. _ –

+0

Ist das wirklich was du willst? Oder willst du eigentlich etwas anderes machen? – Bernhard

+0

@Bernhard: Ja, das ist was ich wollte. :) –

Antwort

4

Die Anweisung for i=1:m weist das Array 1:m der Liste der Werte zu, die der Operator während der Schleife annehmen wird. Dies passiert, wenn die Schleife gestartet wird (Hinweis: Sie können jedes Array verwenden, und es wird spaltenweise abgearbeitet; for letter='abcde';fprintf('%s\n',letter);end funktioniert einwandfrei).

Wenn Sie anpassen möchten, wie oft Ihre Schleife durch iteriert werden, empfehle ich eine while Schleife:

ct = 1; 
maxIterations = 100; 
success = false; 
while ~success 
    fprintf('iteration %i/%i\n',ct,maxIterations); 
    ct = ct + 1; 
    if ct == 2 
     maxIterations == 1000; 
    end 

    if ct > maxIterations 
     success = true; 
    end 
end 
+0

nun, ich habe es versucht (ähnlich deiner Idee) 'm = 100; i = 0; während (i

-2

Ich bin kein Experte, aber die for-Schleife die m var ersetzen mit 100 in der erst ausführen und dann führt es die Schleife von 1 bis 100 (nicht 1 bis m) und es überprüft nicht jeden Lauf, was m weiß, dass m ist 100 und es läuft, bis es 100 erreicht, wenn zum Beispiel Ihr Skript wie folgt ist:

<code> 
m=100; 
for i=1:m (m is 100) 
if(i==2) 
    m=1000; 
    for i=1:m (m is 1000) 
    a=xyz; 
    end 
    end 
end 
</code> 
+0

Ich würde sagen, dass eine While-Schleife hier die Lösung ist. Sie möchten vielleicht nicht wiederholen, falls i == 2 ... – patrik

Verwandte Themen