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 und Daten Import in Simulink

 

madlate
Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 04.04.14
Wohnort: ---
Version: 7.11.1 (R2010b)
     Beitrag Verfasst am: 30.09.2015, 13:48     Titel: ParFor und Daten Import in Simulink
  Antworten mit Zitat      
Hallo zusammen,

ich habe ein Problem mit dem Import von vielen Daten in Simulink. Derzeit verwende ich Signalbuilder. In diesem hat jede Messung eine eigene Gruppe.
Mein Programm ist ähnlich aufgebaut wie dieses Mathworks Beispiel:
http://de.mathworks.com/help/simuli.....chHighlight=signalbuilder
In der parfor Schleife wähle ich nun die jeweilige Gruppe aus und starte parallel die Simulation.
Da ich deutliche mehr Gruppen und länger Signale habe ist mein Modell mittlerweile 500MB groß und das Kompilieren und somit das Simulieren dauert ewig. Es werden vermutlich auch bei jedem Simulieren alle Gruppen kompiliert werden.

Laut dieser Seite http://de.mathworks.com/help/simuli.....nal-data-in-simulink.html wird bei großen Datenmengen empfohlen den Simulink Block "From File" zu verwenden. Meine Signale als Mat-File haben auch nur 80MB.

Nun habe ich jedoch ein Probleme bei der Umsetzung:

Meine erste Idee war folgende:
für jede Messungen eine Time Series erstellen (da die Messungen auch unterschiedliche lange dauern) und diese dann in einer Structur zusammenfassen. Die jeweilige Spalte wären dein mein Index aus der parfor Schleife, welchen ich dann wie die Gruppe des Signalbuilder auswählen könnte. Allerdings wie könnte ich dies realisiern?
Eine Structur kann ich mit meiner Matlabversion nicht importieren (7.11.1). Hierbei bekomme ich folgende Fehlermeldung:
Zitat:
Simulink does not support loading the input data in file 'matlab2.mat'. For data saved using MAT file versions prior to 7.3, Simulink can only load two-dimensional arrays consisting of one-dimensional, double, noncomplex samples. To load data of any other type, complexity or dimension, use a timeseries object and save the file using MAT file version 7.3 or later. For example, use: 'save file_name -v7.3 timeseries_object'.


Danke
madlate
Private Nachricht senden Benutzer-Profile anzeigen


madlate
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 04.04.14
Wohnort: ---
Version: 7.11.1 (R2010b)
     Beitrag Verfasst am: 01.10.2015, 16:09     Titel:
  Antworten mit Zitat      
ich habe mittlerweile ein Lösung gefunden, falls jemand mal das gleiche Problem hat:

ich habe alle meine Messungen in einer Structure zusammengefügt und als mat gespeichert. Diese Datei lade ich nun über die PreLoadFcn jedes mal beim öffnen meines Modells.

Anstatt der Signalbuilder verwende ich jetzt den Block "From Workspace".
Den Wert dieses Blocks passe ich dann in jedem Durchlauf mit set_param an (vgl. mit Code)

Code:
parfor idx=1:length(messungen)
   
    % System laden
    load_system(modelName);
   
   
    % Parameter definition
    set_param(bdroot,'Solver','FixedStepDiscrete','FixedStep','0.01');
   
    set_param([modelName '/input/From Workspace'], 'VariableName', ['messung(' num2str(idx) ',1)'])
    set_param([modelName '/input/From Workspace1'], 'VariableName', ['messung(' num2str(idx) ',2)'])
    set_param([modelName '/input/From Workspace2'], 'VariableName', ['messung(' num2str(idx) ',3)'])
    set_param([modelName '/input/From Workspace3'], 'VariableName', ['messung(' num2str(idx) ',4)'])
   
    % Simulieren
    simout(idx) = sim(modelName,[0 maxTime(idx)]);

end


Die Zeitersparnis ist beträchtlich. Nur das Kompilieren dauerte pro Aufruf des Modells 180s mit den Signalbuilder. Also Anzahl der Messungen x (180s + Simulationszeit) da jedes mal neu kompiliert wird.
So dauert das ganze bei über 30 Messungen (Gesamtzeit ca. 5h) pro Durchlauf nur 240s

Grüße
madlate
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.