WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

EVAL Funktion in parfor loop

 

LordExcalibur
Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 08.05.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.09.2014, 17:49     Titel: EVAL Funktion in parfor loop
  Antworten mit Zitat      
Hallo,

ich habe eine String-Variable a in der der Name eines Struct Arrays steht.
Mit die eval Funktion nutze ich innerhalb einer parfor Schleife.

Code:

parfor 1:x
 a = 'structname';
 b = eval(a);
 output = fuction(b);
end
 


Bei Aufruf kommt die Meldung
Zitat:
Error using eval
Transparency violation error.
See Parallel Computing Toolbox documentation about Transparency.


Hat jemand einen Tipp wie ich das hinbekomme?


Viele Grüße
Sebastian
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 19.09.2014, 21:29     Titel:
  Antworten mit Zitat      
Hallo,

wo ist der Schleifenindex, und inwiefern ist die parfor-Schleife davon abhängig? So macht das jedenfalls wenig Sinn.

Versuchs mal mit
http://www.mathworks.de/products/pa.....-computing/tutorials.html
und den Vorschlägen unter "Deeper Insights into Using parfor".

Davon abgesehen würde ich generell versuchen, eval zu vermeiden.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
LordExcalibur
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 08.05.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.09.2014, 09:09     Titel:
  Antworten mit Zitat      
Ich habe jetzt die Eingangsvariablen als Struct Array organisiert und konnte so die eval Funktion einsparen. Die Parfor Schleife läuft jetzt ohne Fehlermeldung an. Der Code ist unten dargestellt.

Die Schleife wird eine lange Zeit laufen. Ich schätze, dass pro Funktionsaufruf von vi ca. 60min benötigt werden.
Ich habe das ganze jetzt angestoßen mit 3 Workern. Während die parfor Schleife läuft kann ich im Workspace keine Änderung der Outputvariablen erkennen. Eigentlich müsste doch direkt nachdem der Aufruf von vi abgeschlossen ist in die Output Variablen U(i), a(i), abw(i) geschrieben werden, oder ist das bei parfor verschieden.
Ich möchte jetzt ungern warten bis die Schleife komplett durch ist und dann festellen, dass ich keine Outputs bekomme.
Bei den Outputs handelt es sich um 3-dimensionale Arrays die in den Struct Arrays abgelegt werden sollen.

Code:
parfor i=1:18      
     [U(i).neg2, a(i).neg2, abw(i).neg2] = vi( parameter, aktion, data.neg2, structArrayInput(i));
end
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 20.09.2014, 09:48     Titel:
  Antworten mit Zitat      
Hallo,

bei parfor stehen die Ergebnisse erst zur Verfügung, wenn alles abgeschlossen ist. Eine Alternative, bei der du dir Zwischenergebnisse ansehen kannst, wäre Jobs und Tasks (createJob / createTask).

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
LordExcalibur
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 08.05.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.09.2014, 10:04     Titel:
  Antworten mit Zitat      
Ok. Vielen Dank. Dann lasse ich Matlab mal rechnen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.