In MATLAB die folgende for
Schleife:
wird scheinbar nicht wirklich durch Iteration implementiert, sondern i
wird zur Matrix [1 2 3 ... 100] und die "Schleife" wird nur einmal in dieser Matrix i
ausgeführt. Sie können dies überprüfen, indem Sie den Wert von i
oder andere Tracking-Informationen drucken. Über die Schleife wird nur ein einziger Durchlauf durchgeführt.
Ist es möglich, MATLAB zu einer echten Schleife zu zwingen? Der Grund, warum ich frage, ist, dass der obige Ansatz für viele Fälle in Ordnung ist, aber viel schmerzhafter, wenn Sie verschachtelte Schleifen haben, die ausgeführt werden müssen.
Beispiel :
Der folgende Code wird nicht das tun, was Sie erwarten würden, wenn Sie dachten, dass Sie tatsächlich über eine Schleife iterieren:
Man würde erwarten, dass dies bei jedem Ausreißerindex Daten (i) durch den Median der Daten von i-100 bis i + 100 ersetzen würde, aber nicht. Tatsächlich liefert der Median einen einzelnen Wert, der auf einem Konglomerat aller von Ihnen betrachteten Bereiche berechnet wurde, und jeder Datenpunkt (i) wird durch diesen einzelnen Wert ersetzt.
Wenn Sie
schreiben %Vor% Die Schleife wird nur einmal ausgeführt, da ein for
-loop über alle Spalten von dem, was rechts vom Gleichheitszeichen steht, iteriert (es würde 200 mal mit einem 100-by 200 Feld rechts neben dem Gleichheitszeichen).
In Ihrem Beispiel haben Sie jedoch i=[1:100]
, was zu einem Zeilenvektor führt. Daher sollte die Schleife 100x ausführen.
Wenn Sie über ein Array iterieren, das nx1
anstelle von 1xn
sein könnte, können Sie aus Sicherheitsgründen schreiben: