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

Daten aus "To workspace"-Block mit Matlab auslesen

 

Odem
Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 24.01.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.03.2013, 10:49     Titel: Daten aus "To workspace"-Block mit Matlab auslesen
  Antworten mit Zitat      
Hi,

Ich habe folgendes Problem:
Ich simuliere ein Simulink-Modell und will manche Werte der Simulation auslesen. Dafuer habe ich die 'to workspace'-Bloecke in Simulink eingebaut.

So wie ich die Blockeigenschaften verstehe, werden Werte von diesem Block nach jeder Pause oder jedem Stop an Matlab weitergegeben. Nur leider kann ich diese Werte nicht abrufen. Hier ist mein Code:

Code:
% Startwerte fuer Integratoren
ps = 50e5;
pd = 50e5;
xdw = 0.003;
vdw = 0;
xk = 0;
vk = 10;

% Werte zur Auswertung
k=0;
p=300e5;
R=10e10;
a=0; % startwert x
b=0.0075; % intervall fuer x
c=0.015; % endwert x

p_d=50e5;
x_k=0;

while x_k<0.052
  for x=a:b:c
        k=k+1;
        sim('BA_KolbenSim','StopTime','1e-5');
        if R>abs(p-p_d)
            R=abs(p-p_d);
            x_mb=x;
        end
           
     
  end

  x=x_mb;
  sim('BA_KolbenSim','StopTime','1e-5');
 
ps = p_s;
pd = p_d;
xdw = x_dw;
vdw = v_dw;
xk = x_k;
vk = v_k;
end
 


Ich definiere oben Startwerte der Integratoren. Diese sollen dann fuer den naechsten Zeitschritt mit den Endwerten der Simulation ueberschrieben werden. Die Endwerte (Bsp. p_s) lasse ich mir ueber den 'to workspace'-Block ausgeben. De3s weiteren nlasse ich auch nur einen Zeitschritt simulieren. Es muesste also immer genau ein Wert uebergeben werden. Leider passiert immer ab 'ps = p_s;' das hier: Undefined function or variable 'p_s'. Im workspace wird diese Variable auch nicht uebergeben.

Hat jemand eine Idee woran es liegen koennte? Bzw. eine alternative Loesung?

Ich sage schonmal danke fuer das Lesen Smile
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: 03.03.2013, 10:57     Titel:
  Antworten mit Zitat      
Hallo,

rufst du den Code in einer Funktion auf? Dann liegt es vermutlich, dass die Daten im falschen Workspace landen. Wenn ich mich richtig erinnere, kann man das über die Option DstWorkspace beeinflussen.
Schau vor allem auch mal mit dem Debugger, ob die Daten rausgeschrieben werden und wohin.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 24.01.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.03.2013, 10:59     Titel:
  Antworten mit Zitat      
was meinst du genau mit 'Code in Funktion aufrufen'?

Ich schaue mir das mit dstworkspace mal an. Dachte matlab verfuegt ueber einen globalen workspace auf den alles programme zugreifen.
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: 03.03.2013, 11:09     Titel:
  Antworten mit Zitat      
Hallo,

na, ob der von dir gepostete Code Teil einer Funktion ist.

Es gibt zwar einen globalen Workspace, man muss aber explizit angeben, wenn man diesen verwenden möchte. Aus Gründen der Übersichtlichkeit ist davon abzuraten.
Es kann hier auch interessant sein, welche MATLAB-Version du verwendest.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 24.01.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.03.2013, 11:21     Titel:
  Antworten mit Zitat      
Hi Harald,

Nein, der Code ist nicht Teil einer Funktion. Aber du hast Recht. Die 'To Workspace'-Werte aus meinem Simulink-Modell werden in den Base-Workspace geschrieben. Daran sollte es liegen. Ich wurschtel mich mal durch die dstworkspace-Sache. Wenn ich dann noch ein Problem haben sollte, melde ich mich nochmal Smile

Danke fuer deine Hilfe!

ps. Eine Kleinigkeit noch:
Ich will das x=x_mb in der While-Schleife in Excel exportieren. Hierbei soll jedes x gespeichert werden. Kann ich das einfach mit einer Indizierung erreichen? Bsp.: x(t)=x_mb); und t mit jedem Schleifendurchlauf wachsen lassen?

Lg Odem

edit: mein Ziel muss ja sein, dass ich fuer den kompletten Code inklusive Simulink-Modell den gleichen Workspace nutze, damit die Variablen richtig uebergeben werden koennen, oder?
Private Nachricht senden Benutzer-Profile anzeigen
 
Odem
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 24.01.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.03.2013, 13:43     Titel:
  Antworten mit Zitat      
Sooo,

Habe das Problem mit der Ausgabe in den Workspace geloest! Wenn man mit dem Matlab Code eine StopTime im Sim-Befehl vorgibt, erkennt Simulink nicht, dass die Simulation gestoppt oder beendet wird; somit wird auch nichts an Matlab uebergeben.
Was ich gemacht habe: Ich habe die StopTime aus meinem Sim-Befehl entfernt und in Simulink die StopTime als meine Endzeit angegeben. Jetzt werden meine Variablen an Matlab uebertragen.

Das naechste Problem ist nun, dass die uebergebenen matrizen nicht die gleiche Dimension haben, was ein wenig komisch ist, da ich mit fixed step nur ein Zeitintervall simuliere und somit eigentlich immer nur eine 1x1 matrix ausgegeben werden sollte.

Danke, Harald, fuer deine Hilfe!

Lg Odem
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.