Verfasst am: 30.09.2015, 13:48
Titel: ParFor und Daten Import in Simulink
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.
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'.
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)
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
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
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.