Viele meiner Loops sehen so aus:
%Vor%Das sieht ein bisschen chaotisch für mich aus. Gibt es ein Schleifenkonstrukt, mit dem ich die Elemente durchlaufen kann und gleichzeitig den Index trage?
Ich suche nach einer Syntax in der Art von for item_i as item = items
oder for [item_i item] = items
.
Ähnlich wie bei Chris Taylors Antwort könnten Sie das tun:
%Vor%Die Aufzählung-Funktion würde etwas mehr Arbeit benötigen, um einen allgemeinen Zweck zu haben, aber es ist ein Anfang und funktioniert für Ihr Beispiel.
Dies wäre für kleine Vektoren in Ordnung, aber Sie würden dies nicht mit großen Vektoren machen wollen, da die Performance ein Problem darstellt.
Ich glaube, dass dies nicht möglich ist. Ein Trick, den ich in der Vergangenheit verwendet habe, ist die Tatsache, dass Matlab die Spalten einer Matrix überstreicht, sodass Sie eine Funktion enumerate
definieren können, die eine Indexzeile zum Anfang von a hinzufügt Matrix:
und benutze es dann so:
%Vor%Aber das ist nicht wirklich besser als das, was Sie ursprünglich gemacht haben. Es wäre schön, wenn du à la Python so etwas wie
hättest %Vor% Dabei ist enumerate
eine Funktion, die zwei Matrizen gleicher Länge zurückgibt, aber ... das geht nicht.
Ich werde gelegentlich so etwas tun
%Vor% Aber das ist nur in ganz bestimmten Situationen nützlich (genauer gesagt, in den gleichen Situationen, in denen Sie arrayfun
verwenden würden, um die Syntax zu verkürzen), und ehrlich gesagt ist es wahrscheinlich besser für die meisten Fälle - alles andere wird wahrscheinlich deine Absicht verschleiern.
Tags und Links matlab