|
|
Geschwindigkeit beim ersten Aufruf |
|
Dschiehses |
Forum-Anfänger
|
|
Beiträge: 11
|
|
|
|
Anmeldedatum: 12.01.14
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.06.2014, 20:05
Titel: Geschwindigkeit beim ersten Aufruf
|
|
Hallo zusammen,
ich habe noch eine weitere Frage, diesmal zum Thema Simulink. In meinem Projekt simuliere ich einen Wärmespeicher mit verschiedenen Behälterschichten mit jeweils konstanter Temperatur. Die Behälterschicht wird durch ein Simulink-Modell simuliert, das ganze wird über eine for-Schleife aufgerufen (i.d.R. ca. 200-500 Elemente).
Nun ist es so, dass die Simulation eines Elements weit weniger als eine Sekunde dauert (200 Schichten in < 1 Minute). Außer, wenn ich die Matlab-Instanz grad neu geöffnet habe. Dann benötigt der erste Durchlauf durch die Simulation ca 90 Sekunden (also für das erste Tankelement), anschließend geht es mit gewohnter Geschwindigkeit weiter.
Woran liegt das, kann ich das beheben oder verbessern? Ich find das nicht optimal ...
Viele Grüße,
Jan
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 30.06.2014, 10:23
Titel:
|
|
Hallo,
was zeigt Simulink denn rechts unten an, was gemacht wird?
Die Initialisierung vor der eigentlichen Simulation benötigt eine Weile, und wenn z.B. für Modellreferenzen noch Code generiert werden muss, braucht auch das natürlich Zeit, und nur einmalig.
Grüße,
Harald
|
|
|
Andreas Goser |
Forum-Meister
|
|
Beiträge: 3.654
|
|
|
|
Anmeldedatum: 04.12.08
|
|
|
|
Wohnort: Ismaning
|
|
|
|
Version: 1.0
|
|
|
|
|
|
Verfasst am: 30.06.2014, 11:27
Titel:
|
|
Welcher Simulationsmodus ist es denn?
Andreas
|
|
|
Dschiehses |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 11
|
|
|
|
Anmeldedatum: 12.01.14
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 30.06.2014, 15:04
Titel:
|
|
|
|
|
Hallo zusammen,
anscheinend lag es echt nur am initialisieren. Wenn ich direkt nach dem Programmstart die Simulink-Datei öffne, dauert es in etwa ähnlich lange, bis das Fenster offen ist, wie wenn ich über sim('Modell.mdl'); das Modell von Matlab aus starte. Die Simulation (über den Run-Button) dauert dann wieder entsprechend < 1 Sekunde, inklusive Kompilieren.
Der Simulationsmodus ist "normal".
Gibt es eine Möglichkeit, diesen Initialisierungszeitraum zu verkürzen?
Wo wir gerade dabei sind - eine weitere Frage (die nicht unbedingt "wichtig" ist, aber die kam mir gerade in den Kopf):
Ich starte Simulink aus einem Objektorientierten Matlab Projekt. in einer Klasse "sim.SimulateModel" wird ein funktion "simulate(obj)" aufgerufen, die dann letztendlich über sim('Modell.mdl'); Simulink startet. Die Parameter, die ich Simulink übergeben möchte, sind in dem Objekt gespeichert (als "sim.ModelParameters" handle-Objekt). Momentan mache ich es so, dass ich dieses Objekt auf eine globale Variable "s" kopiere, die dann von Simulink ausgelesen wird. die Ergebnisse von Simulink sind dann zwei Vektoren "T_out" und "T_L1", die wiederum im Workspace sind. Die verarbeite ich dann und speichere sie innerhalb des Objekts. Gibt es eine Möglichkeit, dass ich die Parameter ohne den Umweg über globale Variablen an Simulink übergeben kann?
Viele Grüße und Danke ,
Jan
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 30.06.2014, 17:13
Titel:
|
|
Hallo,
es geht also wohl tatsächlich um die Startzeit von Simulink.
Zitat: |
Gibt es eine Möglichkeit, diesen Initialisierungszeitraum zu verkürzen? |
Höchstens indem man Simulink vorab startet, z.B. mit
Für die weitere Frage bitte ein Code-Beispiel angeben. Bei den Erklärungen fehlt mir nämlich offen gesagt der Durchblick.
Grüße,
Harald
|
|
|
Dschiehses |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 11
|
|
|
|
Anmeldedatum: 12.01.14
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 30.06.2014, 18:13
Titel:
|
|
Hi,
danke für die Antwort.
Zu der zweiten Frage, tut mir leid, dass das so verworren geklungen hat.
Der Aufruf von Simulink sieht so aus:
Die Frage ist einfach, ob es möglich ist, obj.p direkt an simulink zu übergeben. Ohne es vorher in einer globalen Variable zwischenzuspeichern...
Vielen Dank!
Jan
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 30.06.2014, 18:35
Titel:
|
|
Hallo,
ich sehe nicht den Sinn der Definition als globale Variablen.
Es kann höchstens sein, dass Simulink in einem anderen Workspace als dem beabsichtigten nach den Daten sucht, und das kann über das Setzen der Option 'SrcWorkspace' beispielsweise auf 'current' angepasst werden.
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 - 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.
|
|