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

Dringend! XTick...

 

Aviator
Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 29.07.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.07.2014, 16:34     Titel: Dringend! XTick...
  Antworten mit Zitat      
Hallo zusammen,

ich bin neu hier, daher erstmal ein allgemeines hallo in die runde.

ich bin gerade dabei für die uni eine arbeit zu schreiben und kriege den plot nicht so hin wie ich das möchte.

ich habe eine simulation mit simulink realisiert, von dort habe ich mittels eines simout einen wert in den workspace geschrieben.

der versuch simout zu plotten gelingt erstmal auch

plot(simout)

das problem dabei ist, dass die x-achse in sekunden dargestellt wird, da das modell in sekundenschritten simuliert wird. ich möchte bei gleich bleibendem plot aber die beschriftung so ändern das zunächst nur alle 3600 sekunden ein wert aufgetragen wird und dieser soll dann in stunden zählen.

ich habe bisher nur rausgefunden das X Tick Locations irgendwie auf 3600er schritte gesetzt werden muss und X Tick Labels diesen wert dann mit stunden überschreibt.

ich hoffe mein problem ist damit klar geworden. ich bin absoluter neuling bei matlab. wenn irgendetwas unklar ist, sagt also bitte bescheid, dann ergänze ich das noch.

leider habe ich nur noch wenig zeit um eine lösung zu finden, daher wäre ich für jede antwort mehr als dankbar.




simout <360013x1 double>
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: 29.07.2014, 16:47     Titel:
  Antworten mit Zitat      
Hallo,

auf Anhieb klingt es für mich so, als ob du besser dran bist, wenn du plot auch x-Werte (also Simulationszeiten) übergibst. Diese sollten in simout enthalten sein, wenn das entsprechend eingestellt ist.

Mit dem Beispiel aus der Doku:
Code:
simOut = sim('vdp','AbsTol','1e-5',...
            'StopTime', '30', ...
            'ZeroCross','on', ...
            'SaveTime','on','TimeSaveName','tout', ...
            'SaveState','on','StateSaveName','xoutNew',...
            'SaveOutput','on','OutputSaveName','youtNew',...
            'SignalLogging','on','SignalLoggingName','logsout');
plot(get(simOut, 'tout'), get(simOut, 'xoutNew'))


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

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 29.07.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.07.2014, 18:12     Titel:
  Antworten mit Zitat      
erstmal danke harald!

plotte ich deinen vorschlag, kann ich nicht mal genau sagen was da eigentlich geplottet wird. weder form noch anzahl der graphen stimmt dabei noch. ich bekomme zwei völlig deformierte kurven angezeigt?!?!?!? man muss aber auch dazu sagen dass ich die befehle nicht hundertprozentig verstehe. soll heissen, dass ich evtl. anpassungen an mein modell evtl übersehe. vielleicht kannst du mir nochmal dazu schreiben was in welcher zeile genau passiert? danke!

ich habe mal den plot wie er standardmäßig von matlab erzeugt wird und den mit angepasster x-achse angehängt. vielleicht wird dann klar was ich meine. ich habe im figure die änderungen vorgenommen, die ich jetzt aber vorab im .m-file definieren möchte...

ich glaube nicht, dass das sonderlich schwer ist, nur kriege ichs einfach nicht hin. vielleicht erbarmt sch jemand mir den korrekten plotbefehl für das gezeigte figure zu posten?!

2.JPG
 Beschreibung:
mit änderungen

Download
 Dateiname:  2.JPG
 Dateigröße:  144.16 KB
 Heruntergeladen:  326 mal
1.JPG
 Beschreibung:
ohne änderungen

Download
 Dateiname:  1.JPG
 Dateigröße:  38.8 KB
 Heruntergeladen:  358 mal
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: 29.07.2014, 18:49     Titel:
  Antworten mit Zitat      
Hallo,

wenn die Simulationszeit in Sekunden ist und du sie in Stunden haben willst, dann kannst du das ja selbst umrechnen: die Zeit durch 3600 teilen.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 29.07.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.07.2014, 19:00     Titel:
  Antworten mit Zitat      
den gedanken hatte ich auch schon. nur weiss ich nicht wie ich das machen kann. ich habe ja keinen separaten zeitvektor sondern eben nur diese eine variable aus dem workspace. mir mangelts hier wirklich gerade an kenntnis des programms und dessen befehle.

ich wäre für einen konkreten lösungsvorschlag unendlich dankbar!

danke schonmal
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: 29.07.2014, 20:41     Titel:
  Antworten mit Zitat      
Hallo,

in diesem Fall:
Code:
plot(get(simOut, 'tout') / 3600, get(simOut, 'xoutNew'))


Wenn du Probleme hast, das auf dein Beispiel anzupassen, dann bitte Modell + Code posten.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 29.07.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.07.2014, 08:48     Titel:
  Antworten mit Zitat      
dieser plotbefehl sollte, wenn ich das richtig sehe so wie er da steht verwedet werden können oder? (vorausgesetzt das simOut die bezeichnung der zu plottenden variable ist?)

das geht aber nicht. ich bekomme eine fehlermeldung im comand window und es passiert garnichts Sad

Code:
>> Plot
Error: File: Plot.m Line: 1 Column: 52
Unbalanced or unexpected parenthesis or bracket.


entferne ich das /3600 (war mir nicht sicher ob das im plot befehl zulässig ist) bekomme ich folgende fehlermeldung:
Code:
>> Plot
Error using handle.handle/get
Invalid or deleted object.

Error in Plot (line 1)
plot(get(simout, 'tout'), get(simout, 'xoutNew'))


ich wüsste gerade nicht wie ich das modell oder dessen code hier posten könnte?!

simout ist im workspace als doppelvektor eingetragen
Code:
simout <360013x1 double>


im modell ist im baustein simout "Array" als "Save Format" eingestellt. die import/export einstellungen habe ich angehängt, ist da vielleicht ein fehler?

3.JPG
 Beschreibung:

Download
 Dateiname:  3.JPG
 Dateigröße:  108.78 KB
 Heruntergeladen:  319 mal


Zuletzt bearbeitet von Aviator am 30.07.2014, 08:59, insgesamt 2-mal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
Aviator
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 29.07.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.07.2014, 08:53     Titel:
  Antworten mit Zitat      
lasse ich mir aus dem anfangs geposteten figure (mit änderung) den code erstellen, dann bekomme ich folgendes:

Code:
function createaxes1(Parent1, Y1)
%CREATEAXES1(PARENT1, Y1)
%  PARENT1:  axes parent
%  Y1:  vector of y data

%  Auto-generated by MATLAB on 30-Jul-2014 09:50:33

% Create axes
axes1 = axes('Parent',Parent1,'YGrid','on',...
    'XTickLabel',{'0','1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24',''},...
    'XTick',[0 3600 7200 10800 14400 18000 21600 25200 28800 32400 36000 39600 43200 46800 50400 54000 57600 61200 64800 68400 72000 75600 79200 82800 86400 90000],...
    'XGrid','on',...
    'CLim',[0 1]);
box(axes1,'on');
hold(axes1,'all');

% Create plot
plot(Y1,'Parent',axes1,'Color',[1 0 0],...
    'DisplayName','Leistungsverlauf der PV-Anlage');

% Create xlabel
xlabel({'Zeitachse in Stunden'});

% Create ylabel
ylabel('Leistung in W');

% Create title
title('Leistungsverlauf PV-Anlage','FontWeight','bold','FontSize',14,...
    'FontAngle','italic');


nach etlichen versuchen komme ich aber damit auch nicht weiter. vielleicht kann mir jemand erklären was genau als Y1 und was als Parent1 definiert werden muss?!
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: 30.07.2014, 11:09     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
>> Plot
Error: File: Plot.m Line: 1 Column: 52
Unbalanced or unexpected parenthesis or bracket.

Es ist keine gute Idee, eine eigene Datei plot zu nennen - schon gar nicht, wenn man darin die Funktion plot aufrufen möchte.
Die Fehlermeldung sollte sich nun selbst erklären: die Klammern passen nicht. Also alle Klammern durchsehen und anpassen.

Der Code von Gestern 21:41 hat doch schon mal funktioniert, oder? An sich musst du nur das / 3600 einfügen.

Zitat:
ich wüsste gerade nicht wie ich das modell oder dessen code hier posten könnte?!

Die benötigten Dateien an einen Beitrag anhängen.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 29.07.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.07.2014, 14:17     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:
Hallo,

in diesem Fall:
Code:
plot(get(simOut, 'tout') / 3600, get(simOut, 'xoutNew'))


Wenn du Probleme hast, das auf dein Beispiel anzupassen, dann bitte Modell + Code posten.

Grüße,
Harald


also dieser plotbefehl hat nicht funktioniert, auch gestern nicht. der vorschlag am anfang hat einen plot erzeugt, allerdings weiss ich nicht was genau da geplottet wurde.

Code:
simOut = sim('vdp','AbsTol','1e-5',...
            'StopTime', '30', ...
            'ZeroCross','on', ...
            'SaveTime','on','TimeSaveName','tout', ...
            'SaveState','on','StateSaveName','xoutNew',...
            'SaveOutput','on','OutputSaveName','youtNew',...
            'SignalLogging','on','SignalLoggingName','logsout');
plot(get(simOut, 'tout'), get(simOut, 'xoutNew'))
 


im anhang habe ich das ergebnis dieses befehls mal angehängt

in wiefern die klammern falsch sein sollen verstehe ich nicht. ich habe analog die klammern verwendet wie hier gepostet.

4.JPG
 Beschreibung:

Download
 Dateiname:  4.JPG
 Dateigröße:  52.69 KB
 Heruntergeladen:  380 mal
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: 30.07.2014, 16:26     Titel:
  Antworten mit Zitat      
Hallo,

vdp ist ein Demo-Modell!
Du musst natürlich schon den Modellnamen anpassen!

Wenn der Code einmal das Bild erzeugt hat, haben die Klammern ja anscheinend gepasst. Was du geändert hast, so dass sie nun nicht mehr passen, weiß ich nicht.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 29.07.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.07.2014, 19:17     Titel:
  Antworten mit Zitat      
Der folgende Anhang sollte das Problem das ich mit dem Plotbefehl (plot(get(simOut, 'tout') / 3600, get(simOut, 'xoutNew'))
) habe erklären. Da ich nicht richtig verstehe was hinter diesem Befehl steckt, fällt es mir schwer Zusammenhänge zu verstehen.



gleiches gilt für den "sim('vdp', ...)". So Dankbar ich für jede Hilfe bin, hoffe ich doch darum bitten zu dürfen mir das einmal etwas ausführlicher und für mich besser verständlich zu erklären was hier was bedeutet und welche Variablen durch mich noch ersetzt/verändert werden müssen. Ich kann schlecht etwas anpassen das ich nicht richtig verstanden habe. Das 'vdp' ein Ersatzmodell ist hätte ich zwar merken können, aber es zeigt doch recht gut das ich diese Art von Befehlen nicht behersche.

Ich verwende den Befehl sim('NAME DES MODELLS') um dieses aufzurufen und direkt zu simulieren. Ich habe nicht verstanden was dieser Befehl für einen Zusammenhang mit dem Plot hat?! Die Simulation ist vor dem plotten durchgelaufen und somit sind alle relevanten Variablen bereits in den Workspace geschrieben worden.

Danke

5.JPG
 Beschreibung:

Download
 Dateiname:  5.JPG
 Dateigröße:  49.17 KB
 Heruntergeladen:  317 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Aviator
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 29.07.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.07.2014, 20:34     Titel:
  Antworten mit Zitat      
Ich habe das Problem nun endlich lösen können. Die Variable SimOut hat sich als Zeitvektor herausgestellt, womit folgendes schon gereicht hat
Code:
plot(SimOut,simout)
komischer Weise wurde beim get() Befehl immer der Fehler einer unbekannten Variable ausgegeben...

Aber mir reicht das Wissen erstmal, dass mein Zeitvektor SimOut heisst. Diesen Zusammenhang hatte ich bis dato nicht verstanden.

Danke für deine Unterstützung Harald!
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: 30.07.2014, 20:56     Titel:
  Antworten mit Zitat      
Hallo,

leider war es mir nicht möglich zu erkennen, welche Variable bei dir welche Bedeutung hat. Da du dein Modell nicht zur Verfügung gestellt hattest, habe ich eben versucht, anhand eines Beispielmodells die Möglichkeiten aufzuzeigen.

Meine Empfehlung wäre dringend, die Grundlagen von MATLAB und Simulink von vorne zu erlernen, und dann eventuelle Lücken mit der Dokumentation der verwendeten Befehle (hier: sim) zu füllen.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 29.07.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.07.2014, 10:30     Titel:
  Antworten mit Zitat      
dürfte ich mit dem jetzigen wissen nochmal auf den folgenden code zurückkommen, den mir matlab aus dem figure am anfang (mit änderung) erstellt hat?!
Code:
function createaxes1(Parent1, Y1)
%CREATEAXES1(PARENT1, Y1)
%  PARENT1:  axes parent
%  Y1:  vector of y data

%  Auto-generated by MATLAB on 30-Jul-2014 09:50:33

% Create axes
axes1 = axes('Parent',Parent1,'YGrid','on',...
    'XTickLabel',{'0','1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24',''},...
    'XTick',[0 3600 7200 10800 14400 18000 21600 25200 28800 32400 36000 39600 43200 46800 50400 54000 57600 61200 64800 68400 72000 75600 79200 82800 86400 90000],...
    'XGrid','on',...
    'CLim',[0 1]);
box(axes1,'on');
hold(axes1,'all');

% Create plot
plot(Y1,'Parent',axes1,'Color',[1 0 0],...
    'DisplayName','Leistungsverlauf der PV-Anlage');

% Create xlabel
xlabel({'Zeitachse in Stunden'});

% Create ylabel
ylabel('Leistung in W');

% Create title
title('Leistungsverlauf PV-Anlage','FontWeight','bold','FontSize',14,...
    'FontAngle','italic');


wenn SimOut der zeitvektor ist und simout (unglückliche benennung, der zusammenhang war mir aber bis gestern nicht bekannt) die eigentliche funktion enthält, dann müsste diese information doch reichen für diesen code, oder? ich kriege es trotzdem nicht hin. was muss ich machen?

kleiner hinweis dazu vielleicht noch: das .m-file in dem dieser code steht ist ein anderes als dass welches das simulink modell aufruft und dessen simulation startet.
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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 - 2025 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.