Verfasst am: 05.08.2009, 14:38
Titel: Plotten der zeit
MOINSEN,
ich möchte aus meinem txt file, in der die zeit im format:
dd.mm.yyyy HH:MM:SS gespeichert ist auf der x achse plotten:
Der code lautet bisher:
Code:
%Datum und Zeit aus der Txt-Datei einlesen
fid = fopen('zeit.txt');
data=textscan(fid,'%s %s %d');
fclose(fid);
data{1,2}; %Datum als String
dn=datenum(data{1,2}) ;%als serial date number
t=datestr(dn, 'HH:MM:SS') ; %als Char array
plot(dn);
datetick('x',13,'keepticks','keeplimits');
set('XTick');
er plottet mit zwar den zeiten verlauf aber auf der x-achse zeigt er mir nur fie zeit 00:00:00 an! Woran liegt es.???... im forum habe ich keine passende lösung gefunden.
Du rufst plot mit einem Eingabeparameter (dn, also Deiner Zeitreihe) auf.
Damit stellen die Werte die y-Achse dar (x-Achse wird durchnummieriert).
Bei datetick sagst Du, dass sich die Datumswerte auf der x-Achse befinden.
Wenn Du
ja ok , das funktioniert... aber ist nicht das, was ich haben möchte....
mein ziel ist es eine zeitachse auf der x-achse zu erstllen aus gegebenen zeiten gespeichert in einem txt file! hatte gedacht mit meinem code das zu erreichen.....
gca ist akutelle Achse
y enthält die numerische Datumsrepresentation
ystr enthält soviele Zeilen wie y Elemente enthält. In jeder Zeile steht das Datum als String.
Als letztes setze ich dann noch die Grenzen für x.
kannst du anhand meines codes (siehe oben), mir das nochmal schreiben ... bzw. wo ich diesen befehl einbauen muss und was bei mir y bzw. ystr ist??? das sind doch 2 neue variablen, die ich definieren muss oder?
aber noch läuft es nicht rund. jetzt erscheint folgende fehlermeldung:
error using --> set
Values must be monotonically
increasing.
hab daraufin hin bei t das format geändert auf dd.mm.yyyy HH:MM:SS,
um eine stetige steigung der zeit zu haben, da es sich bei der zeit um 2 tage handelt....
aber anstatt das vorandene datum zu nehmen (05.02.2009-06.03.2009), wird konstant vom 01.01.2009 ausgegangen über die gesamte zeit.
bitte überprüfe ob Du bei der Konvertierung vom eingelesenen Text ins numerische Format durch datenum auch tatsächlich den Tag und die Uhrzeit übergibst. Ansonsten nimmt MATLAB immer den 01.01. des aktuellen Jahres an. Bei der Konvertierung von Strings mit datenum würde ich auch immer das Format explizit mit angeben (sofern das Format bekannt ist).
@LittleX: Wenn er den Code von oben verwendet, dann macht er es nicht:
Code:
data=textscan(fid,'%s %s %d');
data{1,2}; % Datum als String -> FALSCH, das ist die Zeit!
dn=datenum(data{1,2}) ;% als serial date number -> Hier wird nur die Zeit ohne Datum übergeben
es klappt immer noch nicht und ich weiss langsam nicht weiter.... hier ist der gesamte code. kann mir jemand den fehler finden und korriegieren.... ziel ist es halt zu den messdaten aus A die dazugehörgen zeitachse darzustellen (x-achse)
%Datum und Zeit aus der Txt-Datei einlesen
fid = fopen('zeit.txt');
data=textscan(fid,'%s %s %d');
fclose(fid);
data{1,2}; %Datum als String
dn=datenum([data{1,2} ' ' data{1,2}], 'dd.mm.yyyy. HH:MM:SS') ;%als serial date number
% Darstellung aller Messdaten mit allen Sensoren: figure(1) plot(dn',A);
title('Messdaten aller Sensoren') xlabel('Zeit [-]') ylabel('FTU') grid on
datetick('x',13,'keepticks','keeplimits');
% 1) Oben schreibst dass du Format 'dd.mm.yyyy HH:MM:SS' hast % hier unten hast aber nach yyyy Punkt stehen. Ist das richtig?
%
% 2) Warum [data{1,2} ' ' data{1,2}], soll nicht nach Steve % Aussage [data{1,1} ' ' data{1,2}] sein
dn=datenum([data{1,2} ' ' data{1,2}], 'dd.mm.yyyy. HH:MM:SS') ;
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
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.