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

Simulink Modell in MATLAB mittels for Schleife starten

 

Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.04.2018, 14:45     Titel: Simulink Modell in MATLAB mittels for Schleife starten
  Antworten mit Zitat      
Hallo zusammen,

ich habe ein Simulink Modell, in welchem ich eine Variable variieren, das Modell simulieren und anschließend die Daten speichern möchte. Dafür habe ich mir eine for schleife in MATLAB geschrieben, damit das ganze für eine beliebig große Anzahl der Variable simuliert werden kann. Allerdings habe ich das Problem, dass MATLAB immer nur einmal das ganze simuliert, aber am Ende alle *.mat Files erzeugt werden.
Kann mir jemand sagen, was dabei genau falsch ist?

Hier ist mein Code:

Code:
%
v_test = [10 20 30 40];

for z = 1:length(v_test)
    nr = z;
    for v = 1:length(v_test)
        soll_geschw = v_test(1,v);
        set_param('Modell','SimulationCommand','start');
        simStatus = (get_param('Modell','SimulationStatus'));
     end
     save (['Test_v_', num2str(v_test(1,nr))]);
end
 


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 03.04.2018, 15:02     Titel:
  Antworten mit Zitat      
Hallo,

mir ist nicht klar, warum du zwei Schleifen ineinander schachtelst. Wenn du für jeden Parameter das Modell einmal ausführen willst, reicht eine Schleife.
Wenn die geschachtelten Schleifen korrekt sind, sollte der save-Befehl in die innere Schleife und von z und v abhängig sein.

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



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.04.2018, 07:21     Titel:
  Antworten mit Zitat      
Hallo Harald,

vielen Dank schon mal für die Antwort. Mein Problem bleibt aber trotzdem bestehen, dass MATLAB das Modell startet (dies benötigt etwas Zeit zum berechnen) und anschließend direkt dreimal die *.mat Files speichert. Kann man nach dem set_param Befehl MATLAB sagen, dass es warten soll bis die Simulation fertig ist und erst dann speichern soll?

Du würdest das ganze so umsetzen oder?

Code:
%
v_test = [10 20 30 40];

for v = 1:length(v_test)
    nr = v;
    soll_geschw = v_test(1,nr);
    set_param('Fhzgmodell_V4','SimulationCommand','start');
    save (['Test_v_', num2str(v_test(1,nr))]);
end
 
 
huhu0815
Forum-Century

Forum-Century


Beiträge: 141
Anmeldedatum: 20.02.14
Wohnort: Dresden
Version: R2013b, R2014b, R2016b, R2018a
     Beitrag Verfasst am: 04.04.2018, 07:41     Titel:
  Antworten mit Zitat      
Hi

eine schnelle Lösung wäre hier nachdem du die Simualation gestartet hast, immer wieder den Zustand der Simulation abzufragen und solange diese noch läuft musst du im Code warten.
_________________

Viele Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.04.2018, 09:15     Titel:
  Antworten mit Zitat      
Vielen Dank für die Hinweise! So habe ich mir das schon gedacht. Vielleicht hilft es ja jemandem in Zukunft:

Code:
%
array = [1 2 3]

for i = 1:length(array)
    k = i;
    zu_verändernder_Parameter = array(1,k);
    set_param('Modell','SimulationCommand','start');
    simStatus = get_param('Modell','SimulationStatus');
    while (strcmp(simStatus,'running')) == 1
        simStatus = get_param('Modell','SimulationStatus');
        pause(1);
    end
    save (['Test_array_', num2str(array(1,k))]);
end
 


Vielleicht geht das ganze noch schöner, aber so hat das bei mir funktioniert.
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 04.04.2018, 12:41     Titel:
  Antworten mit Zitat      
Hallo,

du kannst den sim -Befehl verwenden. Dann wartet MATLAB automatisch, bis die Simulation abgeschlossen ist.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
aharrer
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 01.06.17
Wohnort: 92318 Neumarkt
Version: 2017b
     Beitrag Verfasst am: 03.05.2018, 14:32     Titel:
  Antworten mit Zitat      
Hallo,

ich würde den parsim-Befehl benutzen. Ohne die Parallel-Toolbox werden die Simulationsmodelle nacheinander abgearbeitet, sonst parallel ( Anzahl der Kerne -1)

Hier wird auch beschrieben wie man Parameter ändert:

https://de.mathworks.com/help/simulink/slref/parsim.html


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