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

Zeit auf x-Achse plotten

 

Käsekuchen300
Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 24.08.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.09.2018, 11:17     Titel: Zeit auf x-Achse plotten
  Antworten mit Zitat      
Hallo,
ich habe mal wieder ein Problem. Und zwar habe ich Daten die zeitabhängig sind. Also quasi so:
Code:
11:41   29
11:42   29
11:43   29
11:44   29.1
11:45   29
11:46   29
11:47   28.9
11:48   29
11:49   29
11:50   29
11:51   29

Problem ist, hier scheitere ich beim Einlesen auf Grund des Doppelpunkts.

Alternativ lese ich nur die zweite Spalte ein - da die Zeit immer um eine Minute voranschreitet, könnte man die ja auch nachträglich erstellen.
Ich würde die Daten gerne plotten und habe in der Matlab-Hilfefunktion die Funktion datetick gefunden um die x-Achse korrekt zu beschriften. Mein Datensatz hat 1440 Zeilen und wurde von 9 Uhr morgens bis 9 Uhr morgens Folgetag aufgenommen. In der Variablen Temperatur befinden sich die entsprechenden Messwerte
Code:
n=1440;
year=repmat(2018,1,n);
month=repmat(5,1,n);
day=repmat(30,1,n);
hour=1:n;
minutes=zeros(1,n);
sdate=datenum(year,month,day,hour,minutes,minutes);
plot(sdate,Temperature);
datetick('x','HHPM');

Jetzt erhalte ich ein Diagram, bei dem die y-Achse passt, auf der x-Achse jedoch bei jedem Wert 12AM steht... Ich blicke nicht wirklich, was ich ändern muss, damit die Achse passt... Kann mir jemand weiter helfen?
Viele Grüße,
Käsekuchen
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: 05.09.2018, 11:42     Titel:
  Antworten mit Zitat      
Hallo Käsekuchen,

Code:

day=repmat(30,1,n);
hour=1:n;
minutes=zeros(1,n);
 

du lässt deine Stunden von 1 bis 1440 durchlaufen, anstatt von 1 bis 24 (bzw. 9 bis 9 - da musst du dann auch den Tag anpassen). Und setzt die Minuten immer auf 0 anstatt von 1 bis 60 durchlaufen zu lassen. Wenn du das anpasst, dann sollte es auch passen Wink

Grüße
Jonas
_________________

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
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 05.09.2018, 11:50     Titel:
  Antworten mit Zitat      
Hallo,

das lässt sich deutlich einfacher mit datetime angehen.

Code:
data = readtable('testit.txt');
data.Var1 = datetime(data.Var1, 'InputFormat', 'HH:mm');
plot(data.Var1, data.Var2)


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
 
Käsekuchen300
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 24.08.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.09.2018, 11:58     Titel:
  Antworten mit Zitat      
Danke erstmal für die Antwort!!!!

So ganz funktioniert das nicht...
Wenn ich folgendes eingebe:
Code:
n=1440;
year=repmat(2018,1,n);
month=repmat(5,1,n);
day=repmat(1,1,n);
hour=1:24;
minutes=1:60;
sdate=datenum(year,month,day,hour,minutes,minutes);
plot(sdate,Temperature);
datetick('x','HHPM');


bekomme ich den Fehler das die Inputargumente in datenum in ihrer Größe übereinstimmen müssen oder skalar sein müssen. Auch wenn ich den Tag wieder auf 30 setze ist das der Fall... Oder habe ich da etwas missverstanden?
Private Nachricht senden Benutzer-Profile anzeigen
 
Käsekuchen300
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 24.08.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.09.2018, 12:05     Titel:
  Antworten mit Zitat      
@Harald
Auch an dich danke...
Also ich lese meine Daten (Zeit und Temperatur) als Tabelle ein. Und dann will ich quasi sagen, dass die erste Spalte eine Zeit ist, oder? Allerdings gibt er mir da einen Fehler aus - vermutlich weil ich in der Funktion auf die Variable zugreife, die ich gerade erstellen will oder?
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: 05.09.2018, 12:14     Titel:
  Antworten mit Zitat      
Hallo Käsekuchen,

das müsste dann so in der Art aussehen:
Code:

n=1440;year = repmat(2018,1,n);
month = repmat(5,1,n);
day = repmat(30,1,n);
for zaehler = 1:24
    hour(1+(zaehler-1)*60:60+(zaehler-1)*60) = repmat(zaehler,1,n/24);
end
minutes = repmat(1:1:60,1,n/60);
seconds = zeros(1,n);
sdate = datenum(year,month,day,hour,minutes,seconds);
plot(sdate,Temperature); 144
datetick('x','HHPM');
 

Wobei das hier von 0-0 Uhr läuft und nicht von 9 bis 9 (da war ich gerade zu faul zu Razz ). Die Variante von Harald ist natürlich deutlich angenehmer Wink

Grüße
Jonas
_________________

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
 
Käsekuchen300
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 24.08.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.09.2018, 12:26     Titel:
  Antworten mit Zitat      
Vielen, vielen Dank!!! Das funktioniert Smile Das mit dem richtigen Anfang sollte ich hinkriegen - danke nochmal!
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 05.09.2018, 14:36     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Also ich lese meine Daten (Zeit und Temperatur) als Tabelle ein. Und dann will ich quasi sagen, dass die erste Spalte eine Zeit ist, oder? Allerdings gibt er mir da einen Fehler aus - vermutlich weil ich in der Funktion auf die Variable zugreife, die ich gerade erstellen will oder?

Ich habe deine Datei direkt so abgespeichert, wie du den Ausschnitt angegeben hast. Wenn deine tatsächliche Datei anders aussieht und z.B. Überschriften enthält, stimmt Var1 und Var2 natürlich nicht. Bitte also die Datei überprüfen.

Generell bitte immer die Fehlermeldung angeben! Nur so kann man bei der Problemlösung helfen.

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