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

Fehlermeldung beim Aufrufen von Simulink Output

 

Harald
Forum-Meister

Forum-Meister


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

und nun?
Wahrscheinlich bekommst du bei der Ausführung dieselbe Fehlermeldung wie ich:
Undefined function or variable 'tout'.
Error in Untitled6 (line 16)
plot(tout,yout);

Wo soll das tout denn herkommen? Wie gesagt:
Zitat:
Wenn du was plotten willst, musst du dir die Information aus simOut herausholen

Sprich, statt tout und yout muss etwas ähnliches stehen wie bei x.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen


ds1993
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 16.08.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.08.2018, 15:52     Titel:
  Antworten mit Zitat      
Also habe es folgendermaßen geändert:

Code:
load_system('model_ds');

x = 1;

end_time = 0;
step_time = 1;

for i = 0:0.1:1
   
set_param('model_ds/Constant','Value','x');

simOut = sim('model_ds','SaveOutput','on','SaveFormat', 'Dataset');

x = simOut.yout{1}.Values.Data(end);

plot(tout, x);

hold on;
       
end
 


___________________________________________________________________________________

Bekomme auch keine Fehlermeldung da ich tout als Variable definiert habe. Allerdings wird mir kein Plot angezeigt, obwohl die Simulation zu Ende läuft.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 27.08.2018, 18:28     Titel:
  Antworten mit Zitat      
Hallo,

und wie hast du tout definiert?

x ist ja nur ein einzelner Punkt. Für das Plotten ist das doch eher nicht gewünscht?

Wenn du den einen Punkt sichtbar machen willst, brauchst du einen Marker.
Code:
plot(tout, x, 'o');


Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
ds1993
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 16.08.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.08.2018, 12:28     Titel:
  Antworten mit Zitat      
Hallo Harald,

mein Code ist wie folgt:

Code:
load_system('model_ds');

x = 1;

end_time = 0;
step_time = 1;


for i = 0:0.1:1.0
   
set_param('model_ds/Constant','Value','x');

simout = sim('model_ds','SaveOutput','on','SaveFormat', 'Dataset');

x = simout.yout{1}.Values.Data(end);
     
end

plot(i, x, 'o');
 


Der Endwert von x ist korrekt. Nur möchte ich für jeden Zeitschritt 0, 0.1,..,1 den entsprechenden x Wert geplottet haben. Nur klappt das bislang nicht.
Private Nachricht senden Benutzer-Profile anzeigen
 
J0nas
Forum-Century

Forum-Century


Beiträge: 208
Anmeldedatum: 10.09.15
Wohnort: ---
Version: ab 2016a
     Beitrag Verfasst am: 28.08.2018, 12:34     Titel:
  Antworten mit Zitat      
Hallo,

du überschreibst bei jedem Schleifendurchlauf dein x. Entweder du schreibst deine Werte in einen Vektor und plottest nach der Schleife den Vektor. Oder du machst das etwas unschöner, indem du am Ende jedes Schleifendurchlaufs einen Punkt plottest und dann ein hold on anhängst.

Grüße
Jonas
_________________

1.) Ask Google & Matlab Documentation
2.) Ask gomatlab.de & Technical Support of MathWorks
3.) Go mad, your problem is unsolvable

Zuletzt bearbeitet von J0nas am 28.08.2018, 12:56, insgesamt 3-mal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
ds1993
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 16.08.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.08.2018, 12:51     Titel:
  Antworten mit Zitat      
Hallo Harald, alles klar klingt logisch.
In etwa so?

Code:

load_system('model_ds');

x = 1;

end_time = 0;
step_time = 1;

vektor = zeros(1,11);

for i = 0:0.1:1.0
   
set_param('model_ds/Constant','Value','x');

simout = sim('model_ds','SaveOutput','on','SaveFormat', 'Dataset');

x = simout.yout{1}.Values.Data(end);

end


plot(i, x,'o');

 
Private Nachricht senden Benutzer-Profile anzeigen
 
J0nas
Forum-Century

Forum-Century


Beiträge: 208
Anmeldedatum: 10.09.15
Wohnort: ---
Version: ab 2016a
     Beitrag Verfasst am: 28.08.2018, 13:14     Titel:
  Antworten mit Zitat      
Hallo,

da fehlt der Vektor, und für Punktewolken bevorzuge ich scatter . So könnte es klappen:

Code:

load_system('model_ds');

x = 1;

end_time = 0;
step_time = 1;

vektor = zeros(11,2);

for i = 0:0.1:1.0
    set_param('model_ds/Constant','Value','x');
    simout = sim('model_ds','SaveOutput','on','SaveFormat', 'Dataset');
    x = simout.yout{1}.Values.Data(end);
    vektor(i*10+1,1) = i;    
    vektor(i*10+1,2) = x;
end

scatter(vektor(:,1), vektor(:,2),'*')
 


Grüße
Der-Fake-Harald Cool Laughing
_________________

1.) Ask Google & Matlab Documentation
2.) Ask gomatlab.de & Technical Support of MathWorks
3.) Go mad, your problem is unsolvable
Private Nachricht senden Benutzer-Profile anzeigen
 
ds1993
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 16.08.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.08.2018, 14:09     Titel:
  Antworten mit Zitat      
Hallo,

habe den Code folgendermaßen angepasst. Meine vorherige Lsg. ist dort auskommentiert. Das Figure Fenster öffnet sich zwar allerdings wird nichts angezeigt.

Code:

end_time = 0;

step_time = 1;

x = 1;

j = 1;

vektor = zeros(11,2);

for i = 0:0.1:1.0
   
    load_system('model_ds');

    set_param('model_ds/Constant','Value','x');
   
    simout = sim('model_ds','SaveOutput','on','SaveFormat', 'Dataset');
   
    x = simout.yout{1}.Values.Data(end);
   
    vektor(j,1) = i;    
   
    vektor(j,2) = x;
   
    j=j+1;

end

scatter(vektor(:,1), vektor(:,2),'*');






% x = 1;
%
% end_time = 0;
% step_time = 1;
%
% j =1;
%
% %x(j) = zeros(1, 11);
%
% for i = 0:0.1:1.0
%    
% load_system('model_ds');
%
% set_param('model_ds/Constant','Value','x');
%
% simout = sim('model_ds','SaveOutput','on','SaveFormat', 'Dataset');
%
% x(j) = simout.yout{1}.Values.Data(end);
%
% plot(x,'o');
%
% hold on;
%
% j=j+1
%
%
% end
 
Private Nachricht senden Benutzer-Profile anzeigen
 
ds1993
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 16.08.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.08.2018, 16:00     Titel:
  Antworten mit Zitat      
Hallo,

klappt jetzt alles. Vielen Dank euch!
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 28.08.2018, 18:13     Titel:
  Antworten mit Zitat      
Hallo,

dann poste doch bitte deine letztliche Lösung, damit andere, die auf den Thread stoßen, ggf. auch was davon haben.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
ds1993
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 16.08.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.08.2018, 17:31     Titel:
  Antworten mit Zitat      
Code:

end_time = 0;

step_time = 1;

x = 1;

j = 1;

k = 1;

y = zeros(1,11);

vektor = zeros(11,2);

for i = 0:0.1:1.0
   
    load_system('model_ds');

    set_param('model_ds/Constant','Value','x');
   
    simout = sim('model_ds','SaveOutput','on','SaveFormat', 'Dataset');
   
    x= simout.yout{1}.Values.Data(end);
   
    y(k) = x;
   
    k = k+1;
   
    vektor(j,1) = i;    
   
    vektor(j,2) = x;
   
    j=j+1;

end

plot(vektor(:,1), vektor(:,2),'*','LineWidth',1.5);
 


Viele Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite Zurück  1, 2

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.