|
|
ungültiger Index in parfor-Schleifen |
|
senmeis |

Forum-Guru
|
 |
Beiträge: 301
|
 |
|
 |
Anmeldedatum: 09.03.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 25.02.2015, 15:49
Titel: ungültiger Index in parfor-Schleifen
|
 |
Hi,
mit dem folgenden Code möchte ich die parfor-Schleife verwenden.
Leider meldet sich ein Fehler:
Zitat: |
The variable P in a parfor cannot be classified. |
Die Frage ist wie kann eine Varialbe, die ausser der Schleife initialisiert wird, als Index eingesetzt werden?
Owen
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 25.02.2015, 20:38
Titel:
|
 |
Hallo,
das ist in dieser Form nicht zulässig, da die Iterationen nicht voneinander unabhängig sind. Das Ergebnis hängt von der Ausführungsreihenfolge der Schleifen ab, und das ist nur sehr eingeschränkt zulässig.
Bei dem Code wird ja auch im Editor schon durch rote Markierung angezeigt, dass dies nicht zulässig ist. Folgendes ginge:
Tutorials zu Parallel Computing befinden sich hier.
http://de.mathworks.com/videos/seri.....ting-tutorials-97719.html
Insbesondere der 4. Teil ist empfehlenswert, wenn es um Probleme mit parfor geht.
Grüße,
Harald
|
|
|
senmeis |
Themenstarter

Forum-Guru
|
 |
Beiträge: 301
|
 |
|
 |
Anmeldedatum: 09.03.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 27.02.2015, 15:59
Titel:
|
 |
Verstehe.
Man möchte zusätzlich die Ergebnisse in eine Matrix speichern.
Das geht leider wieder schief. Soweit ich verstehe sind Iterationen schon unabhängig. Oder? Ist es überhaupt möglich, in parfor auf eine Matrix zuzugreifen?
Owen
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 27.02.2015, 21:14
Titel:
|
 |
Hallo,
du schreibst die Ergebnisse mit diesem Code aber nicht in eine Matrix, sondern einen Vektor, den du mit verhälnismäßig komplex berechneten Indizes ansteuerst.
Folgendes geht z.B.:
Im Zweifelsfall hilft es, den Inhalt der parfor-Schleife in eine Funktion auszulagern - siehe "Useful Techniques (3)" aus Video 4 des Links und die zugehörigen Beispiele ex2_*.m .
Grüße,
Harald
|
|
|
senmeis |
Themenstarter

Forum-Guru
|
 |
Beiträge: 301
|
 |
|
 |
Anmeldedatum: 09.03.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 01.03.2015, 17:08
Titel:
|
 |
Ist es so, dass der Index einer einzelnen Dimension in der Matrix a nur von einer einzigen Loop-Variable (i1 oder i2) abhängen darf?
In meinem Code wird der erste Index ((i1+1)*3+i2+2) aus zwei Loop-Variablen zusammengesetzt und das ist unzulässig in parfor.
Owen
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 01.03.2015, 18:09
Titel:
|
 |
Hallo,
die technischen Details können wohl nur die Entwickler beantworten.
Mit dem hier und in den Tutorials beschriebenen Techniken sollte allerdings alles umsetzbar sein, dass keine Abhängigkeit zwischen den Iterationen enthält. Wenn du z.B. einen Vektor willst, kannst du ja zunächst eine Matrix erstellen und diese dann umwandeln.
Grüße,
Harald
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2025
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|