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

Geschwindigkeit beim ersten Aufruf

 

Dschiehses
Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 12.01.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.06.2014, 20:05     Titel: Geschwindigkeit beim ersten Aufruf
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 30.06.2014, 10:23     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 30.06.2014, 11:27     Titel:
  Antworten mit Zitat      
Welcher Simulationsmodus ist es denn?

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Dschiehses
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 12.01.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.06.2014, 15:04     Titel:
  Antworten mit Zitat      
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 Smile ,
Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 30.06.2014, 17:13     Titel:
  Antworten mit Zitat      
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
Code:


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
Private Nachricht senden Benutzer-Profile anzeigen
 
Dschiehses
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 12.01.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.06.2014, 18:13     Titel:
  Antworten mit Zitat      
Hi,

danke für die Antwort.

Zu der zweiten Frage, tut mir leid, dass das so verworren geklungen hat. Wink

Der Aufruf von Simulink sieht so aus:
Code:

classdef SimulateModel < handle
  properties
    p; % p ist ein Objekt, was die parameter in struct-form speichert
  methods
  % (...)

    function simulate(obj)
      global p T;

      % parameter in globaler variable p speichern
      p = obj.p;
      % eingabevektor in globaler variable T speichern
      T.in = zeros(obj.p.sim.timeh*3600/obj.p.sim.timeStep+1, 2);
      T.in(:, 1) = 0:obj.p.sim.timeStep:obj.p.sim.timeh*3600;
      T.in(:, 2) = p.Tin;
      % simulation aufrufen, dort werden p und T benötigt
      sim('Model.mdl');
      % T_out wird von simulink zurück gegeben
      p.T = T_out(:);
    end % simulate
  end % methods
end % classdef
 


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
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 30.06.2014, 18:35     Titel:
  Antworten mit Zitat      
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
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.