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

Achseelbeschriftungen

 

Mike222

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.09.2014, 07:03     Titel: Achseelbeschriftungen
  Antworten mit Zitat      
Hallo,

ich möchte mit MATLAB 3 Vektoren (y1, y2, y3) grafisch visualisieren. Die Vektoren beinhalten eine Zeitserie mit Stundenwerten beginnend um 13 Uhr und endend um 12 Uhr des Folgetages. Die Beschriftung der Werte an der X-Achse sollen den Zeiten entsprechen, also
x = [13:24 1:12]

Die zu Elemente der zu visualisierenden Vektoren sind aufsteigent nach der Zeit sortiert, d.h. der erste Wert wurde um 13 Uhr, der letzte Wert um 12 Uhr des Folgetags aufgenommen.

Jetzt habe ich Probleme das ganze zu zeichnen.

Probiert habe ich:
Code:


Damit wird jedoch der Graph total zerschossen, da Matlab die Werte offensichtlich aufsteigend nach x sortiert.

Nutze ich nur
Code:

so wird der Graph korrekt gezeichnet, jedoch stimmt die Beschriftung der Werte an der X-Achse nicht.

Kann mir jemand einen Tip geben wie ich das hinbekomme?

Viele Grüße
Mike


Nras
Forum-Meister

Forum-Meister


Beiträge: 608
Anmeldedatum: 21.02.12
Wohnort: ---
Version: 7.12.0.635 (R2011a)
     Beitrag Verfasst am: 17.09.2014, 07:37     Titel:
  Antworten mit Zitat      
Hallo,

das Problem hast du fast richtig erkannt, es wird eben von x(1),y(1) eine Line zu x(2), y(2) gezogen, von dort weiter zu x(3), y(3) usw bis schließlich x(24), y(24). Dummerweise ist dein x aber nicht aufsteigend sortiert, sondern fängt bei 13 Uhr des ersten Tages and und hört bei 12 Uhr des nächsten Tages auf. Matlab hat aber keine Ahnung, dass du Stunden eines Tages meinst und die Werte in Wirklichkeit "richtig sortiert" sind. Das kann man aber mit datenum und datetick hinkriegen:
Code:
y = 1:24;   % Die Daten

t = datenum('01-13', 'dd-hh'); % 13 Uhr des ersten Tages
dt = 1/24;  % Eine Stunde ist 1/24 eines Tages
tvec = t:dt:t+23*dt;    % Zeitvektor

plot(tvec,y, 'o-');
datetick x

% Oder mit etwas mehr feintuning Möglichkeiten:
% datetick('x', 'dd-hh', 'keepticks')


Edit: Alternativen zum Erstellen des Zeitvekors tvec gibt es viele. Vielleicht gefallen dir andere davon besser:
Code:
% Start- und Endzeit:
t_start = datenum('01-13', 'dd-hh'); % 13 Uhr des ersten Tages
t_end = datenum('02-12', 'dd-hh'); % 12 Uhr des zweiten Tages

% das dt selbst bestimmen und mit Doppelpunktoperator:
dt = 1/24;  % Eine Stunde ist 1/24 eines Tages
tvec = t_start:dt:t_end;

% oder mit linspace arbeiten:
tvec = linspace(t_start, t_end, 24)


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