Können in MATLAB wie in Python parallele Traversale ausgeführt werden?

8

Mit der Funktion zip ermöglicht Python, dass Schleifen mehrere Sequenzen parallel durchlaufen.

for (x,y) in zip(List1, List2):

Hat MATLAB eine gleichwertige Syntax? Wenn nicht, was ist der beste Weg, mit MATLAB über zwei parallele Arrays gleichzeitig zu iterieren?

    
Jason 08.09.2008, 08:25
quelle

5 Antworten

13

Wenn x und y Spaltenvektoren sind, können Sie Folgendes tun:

%Vor%

(Bei Zeilenvektoren verwenden Sie einfach x und y ).

Hier ist ein Beispiel:

%Vor%     
mattiast 15.09.2008 19:20
quelle
5

Wenn ich mich nicht irre, erstellt die Zip-Funktion, die Sie in Python verwenden ein Paar von die Elemente in list1 und list2 . Grundsätzlich ist es immer noch eine for-Schleife mit dem Zusatz, dass es die Daten aus den beiden separaten Listen für Sie abruft, stattdessen müssen Sie es selbst tun.

Vielleicht ist Ihre beste Option, einen Standard für eine Schleife wie folgt zu verwenden:

%Vor%

oder was auch immer Sie mit den Daten machen müssen.

Wenn Sie wirklich über Parallel Computing sprechen, sollten Sie sich die Parallel Computing Toolbox ansehen matlab und genauer gesagt unter parfor

    
sven 08.09.2008 11:34
quelle
3

Nur in Oktave getestet ... (keine Matlab-Lizenz). Variationen von arrayfun () existieren, überprüfen Sie die Dokumentation.

%Vor%

Erträge ...

%Vor%     
DMC 09.09.2008 02:32
quelle
1

Ich würde empfehlen, die beiden Arrays für die Berechnung zu verbinden:

%Vor%

Das funktioniert gut, wenn Ihre Funktionen mit Vektoren arbeiten können. Andererseits können viele Funktionen sogar mit Matrizen arbeiten, so dass Sie die Schleife nicht einmal brauchen würden.

    
bastibe 20.10.2008 14:22
quelle
-2

for Schleifen in MATLAB waren früher langsam, aber das stimmt nicht mehr.

Die Vektorisierung ist also nicht immer die Wunderlösung. Verwenden Sie einfach den Profiler und die Funktionen tic und toc , um mögliche Engpässe zu erkennen.

    
Vincent 26.09.2008 11:31
quelle

Tags und Links