Ordnungsgemäßer Weg zum Schleifen mit Index und Wert in Matlab

8

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 .

    
Andreas 06.05.2013, 09:35
quelle

4 Antworten

7

Ä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.

    
grantnz 06.05.2013, 10:11
quelle
5

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:

%Vor%

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.

    
Chris Taylor 06.05.2013 09:50
quelle
2

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.

    
wakjah 06.05.2013 09:53
quelle
1

Funktioniert das für Sie?

%Vor%

Ich hoffe, es hilft.

    
Stewie Griffin 06.05.2013 09:44
quelle

Tags und Links