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

parfor : Workspace und Variablenproblem

 

zmaier
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 14.09.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.09.2017, 17:25     Titel: parfor : Workspace und Variablenproblem
  Antworten mit Zitat      
Hallo,

folgendes Problem.
Ich habe 100 Messdateien, die Datei wird importiert, mit den Daten wird etwas ausgerechnet (im Endausbau des Scripts mittels Simulinkmodell), Ergebnis kommt in Vektor.
Das ganze funktioniert wunderbar mit einer normalen for-Schleife.
Da die Aufage super parallelisierbar ist wollte ich die Auswertung mittels parfor beschleunigen.

Code:

files= dir(folder)  % Liste der Dateien erzeugen  

parfor i=1:length(files)

      loadDatei(files(i).name) % Datei einlesen mit dem Script loadDatei
      disp(num2str(Variable1)); % Hier kommt nichts raus?
      A(j)=Variable1+Variable2  % Beide Variablen werden normalerweise mit loadDatei im Workspace erzeugt

end
 


Warum klappt das nicht?
Die Variablen sind irgendwie nicht sichtbar.
Ich habe auch schon probiert die Zeil loadDatei... mittels
Code:

evalin ('caller','loadDatei(files(i).name)') aufzurufen, funktioniert aber leider auch nicht.
 

Irgend eine Idee warum? Müsste doch machbar sein, oder.

Schöne Grüße
Martin
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.449
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 14.09.2017, 19:11     Titel:
  Antworten mit Zitat      
Hallo,

damit man dir weiterhelfen kann, müsste man die loadDatei.m und idealerweise noch min. 2 Beispieldateien haben.

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

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 14.09.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.09.2017, 09:13     Titel:
  Antworten mit Zitat      
Hallo Harald,

danke für deine Hilfe, ich habe alle Daten jetzt angehängt.

Testdaten.zip ... hier sind die einzulesenden Dateien drinnen
mdfimport.m ... das ist das Script zum Datenimport
Auswertung.m ... Auswertescript ansich.


Mit einer for-Schleife werden die Daten richtig eingelesen, als Test gebe ich einfach die Länge der Variable VehV_v_1 aus. Ist die Länge immer unterschiedlich, wird die Datei richtig eingelesen.

Mit parfor bekomme ich den Fehler :
An UndefinedFunction error was thrown on the workers for 'VehV_v_1'. This might be because the file containing 'VehV_v_1' is not
accessible on the workers. Use addAttachedFiles(pool, files) to specify the required files to be attached. See the documentation
for 'parallel.Pool/addAttachedFiles' for more details.

Caused by:
Undefined function or variable 'VehV_v_1'.


Schöne Grüße
Martin

mdfimport.m
 Beschreibung:

Download
 Dateiname:  mdfimport.m
 Dateigröße:  109.07 KB
 Heruntergeladen:  316 mal
Auswertung.m
 Beschreibung:

Download
 Dateiname:  Auswertung.m
 Dateigröße:  346 Bytes
 Heruntergeladen:  323 mal
Testdaten.zip
 Beschreibung:

Download
 Dateiname:  Testdaten.zip
 Dateigröße:  27 KB
 Heruntergeladen:  278 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.449
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 15.09.2017, 19:18     Titel:
  Antworten mit Zitat      
Hallo,

das Problem dürfte sein, dass mdfimport die Daten im Base Workspace ablegt. Wenn ich mich recht erinnere, gibt es auch eine Syntax, mit der man in ein .mat-File speichern kann. Versuch mal das, und dann die .mat-Datei laden mit
Code:


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

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 14.09.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.09.2017, 09:40     Titel:
  Antworten mit Zitat      
Hallo Harald,

danke für den Tip.
Im Endausbau der ganzen Auswertung wird ein anderes Script zum Dateneinlesen verwendet, welches die Daten ebenfalls auch noch bearbeitet und dann im Workspace ablegt. Das Scipt ist eine DLL, ich sehe also nicht wirklich was darin passiert und ich darf das Sciprt wegen Lizenzgründen auch nicht hier hochladen Sad

Gibt es eine Möglichkeit expliziet anzugeben in welchem Workspace die Ausgabe erfolgen soll? Ich dachte mit evalin sollte das möglich sein?

[/code]
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.449
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 20.09.2017, 10:06     Titel:
  Antworten mit Zitat      
Hallo,

wird ein Skript verwendet oder eine Funktion?
Wenn man sich von Funktionen Rückgabeargumente zurückholt, werden sie automatisch in den richtigen Workspace abgelegt.

Zitat:
Das Scipt ist eine DLL, ich sehe also nicht wirklich was darin passiert

Ein Skript als DLL klingt merkwürdig. Was darin passiert bzw. wie die DLL zu verwenden ist, sollte dokumentiert sein

Zitat:
Gibt es eine Möglichkeit expliziet anzugeben in welchem Workspace die Ausgabe erfolgen soll? Ich dachte mit evalin sollte das möglich sein?
evalin, assignin etc. verursachen mehr Probleme als sie lösen und sollten daher vermieden werden.

Zitat:
ich darf das Sciprt wegen Lizenzgründen auch nicht hier hochladen

Das ist schade. Am besten helfen kann man nämlich, wenn man das Problem vor Augen hat und damit experimentieren kann.

Häufig hilft es, den Inhalt der for-Schleife in eine Funktion auszulagern und dann die Funktion aus der parfor-Schleife heraus aufzurufen.

Grüße,
Harald
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 - 2024 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.