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

Plotten der zeit

 

Vanillebacke
Forum-Century

Forum-Century


Beiträge: 167
Anmeldedatum: 06.05.09
Wohnort: Hamburg
Version: R2014a
     Beitrag Verfasst am: 05.08.2009, 15:38     Titel: Plotten der zeit
  Antworten mit Zitat      
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.

kann mir jemand weiterhelfen???

danke

gruß vb
Private Nachricht senden Benutzer-Profile anzeigen


LittleX
Forum-Guru

Forum-Guru


Beiträge: 494
Anmeldedatum: 14.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.08.2009, 16:07     Titel:
  Antworten mit Zitat      
Hallo,

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
Code:

datetick('y',13,'keepticks','keeplimits');
 

aufrust solltest Du das Datum sehen.

Viele Grüße,

LittleX
Private Nachricht senden Benutzer-Profile anzeigen
 
Vanillebacke
Themenstarter

Forum-Century

Forum-Century


Beiträge: 167
Anmeldedatum: 06.05.09
Wohnort: Hamburg
Version: R2014a
     Beitrag Verfasst am: 05.08.2009, 16:24     Titel:
  Antworten mit Zitat      
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.....

was du weiter oder jemand anders???

danke

viele grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
LittleX
Forum-Guru

Forum-Guru


Beiträge: 494
Anmeldedatum: 14.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.08.2009, 16:49     Titel:
  Antworten mit Zitat      
Hallo,

Du kannst auch direkt nur die xtick und die xticklabel setzen:
Code:

set(gca,'xtick',y,'xticklabel',ystr,'xlim',[y(1),y(end)])
 


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.

Viele Grüße,

LittleX
Private Nachricht senden Benutzer-Profile anzeigen
 
Vanillebacke
Themenstarter

Forum-Century

Forum-Century


Beiträge: 167
Anmeldedatum: 06.05.09
Wohnort: Hamburg
Version: R2014a
     Beitrag Verfasst am: 05.08.2009, 17:08     Titel:
  Antworten mit Zitat      
steh irgendwie grad voll auf dem schlauch!!!!-Sad

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?

danke
Private Nachricht senden Benutzer-Profile anzeigen
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 05.08.2009, 17:33     Titel:
  Antworten mit Zitat      
Moin,

LittleX hat eigentlich recht gut erklärt, was "y" und "ystr" sind.
"y" entspricht in deinem Code "dn" und "ystr" sollte "t" entsprechen.

Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
Vanillebacke
Themenstarter

Forum-Century

Forum-Century


Beiträge: 167
Anmeldedatum: 06.05.09
Wohnort: Hamburg
Version: R2014a
     Beitrag Verfasst am: 05.08.2009, 19:27     Titel:
  Antworten mit Zitat      
danke,

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.

wie kann ich das ändern... ???

gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
LittleX
Forum-Guru

Forum-Guru


Beiträge: 494
Anmeldedatum: 14.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.08.2009, 11:09     Titel:
  Antworten mit Zitat      
Hallo,

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

Viele Grüße,

LittleX
Private Nachricht senden Benutzer-Profile anzeigen
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 06.08.2009, 11:14     Titel:
  Antworten mit Zitat      
@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


@vanillebacke: So sollte es funktionieren:
Code:
data=textscan(fid,'%s %s %d');
dn=datenum([data{1,1} ' ' data{1,2}], 'dd.mm.yyyy HH:MM:SS');% als serial number


Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
Vanillebacke
Themenstarter

Forum-Century

Forum-Century


Beiträge: 167
Anmeldedatum: 06.05.09
Wohnort: Hamburg
Version: R2014a
     Beitrag Verfasst am: 19.08.2009, 08:55     Titel:
  Antworten mit Zitat      
moinsen....

konnte die tage es nicht ausprobieren....

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)

Code:

clear all

% Einlesen der  Messdaten
daten = load('test Argus_ohne_Zeit.txt');


%Messdaten weise ich der Matrix A vom Typ(7681,96) zu
A = [daten];

%Startzeile in Matrix A hinzufügen und mit Werten füllen, die die Anzahl
%der Spalten bzw. die Anzahl der Sensoren wiedergibt:

A=[1:size(A,2);A];    

%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');
 


es wäre super, wenn mir einer helfen könnte....

danke schon mal

gruss vb
Private Nachricht senden Benutzer-Profile anzeigen
 
Vanillebacke
Themenstarter

Forum-Century

Forum-Century


Beiträge: 167
Anmeldedatum: 06.05.09
Wohnort: Hamburg
Version: R2014a
     Beitrag Verfasst am: 19.08.2009, 09:09     Titel:
  Antworten mit Zitat      
achso...

folgende fehlermeldung wird mir angezeigt:

error using ==> horzcat
CAT arguments dimension are not consistent
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 19.08.2009, 09:19     Titel:
  Antworten mit Zitat      
Hallo,

an dieser Stelle stimmt etwas bei dir nicht:

Code:

% 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') ;

 


versuch mal um dir selbst klar zu machen, was da passiert
den Code in Häppchen zu zerlegen,
um mach von diesen Schritten dir Ausgaben z.b so,
Code:

tmpdata =[data{1,2} ' ' data{1,2}]
dn=datenum(tmpdata, 'dd.mm.yyyy. HH:MM:SS')
 

dann kannst besser sehen was schief läuft.

Viel Erfolg


Edit:
Was steht denn in data?

1) Mach da ein Brackpoint an der Stelle
Code:
dn=datenum([data{1,2} ' ' data{1,2}], 'dd.mm.yyyy. HH:MM:SS')


2) und schreibe in der Konsole
>>data{1,1}
>>data{1,2}

3) Poste dann die Ausgaben
Private Nachricht senden Benutzer-Profile anzeigen
 
Vanillebacke
Themenstarter

Forum-Century

Forum-Century


Beiträge: 167
Anmeldedatum: 06.05.09
Wohnort: Hamburg
Version: R2014a
     Beitrag Verfasst am: 19.08.2009, 14:23     Titel:
  Antworten mit Zitat      
bei data{1,1} zeigt matlab mir das datum im format dd.mm.yyyy
und data{1,2} die uhrzeit: HH:MM:SS!!!

weiss aber dennoch nicht weiter,,,,, ????#!!!! Crying or Very sad
Private Nachricht senden Benutzer-Profile anzeigen
 
LittleX
Forum-Guru

Forum-Guru


Beiträge: 494
Anmeldedatum: 14.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.08.2009, 14:08     Titel:
  Antworten mit Zitat      
Hallo,

da passen wohl die Dimensionen beim Zusammenbauen des Gesamtausdrucks aus Datum und Uhrzeit nicht.

Versuch mal folgendes:
Code:

DT = cellfun(@(a,b)[a,' ',b],data(1,1),data(1,2),'uniformoutput',false);
 


Viele Grüße,

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