Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Bücher:

MATLAB Simulink Stateflow

Studierende:
weitere Angebote

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Zeitstempel umrechnen

 

wgttzs!
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 62
Anmeldedatum: 02.12.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.01.2022, 17:34     Titel: Zeitstempel umrechnen
  Antworten mit Zitat      
Liebe Go Mtalab Gemeinde,

ich habe einen Zeitstempel (z.B. 15589) von einem Datensatz der 43200 Datenpunkte groß (Ein Datensatz ist ein Tag) ist. Wenn ich dass per Hand umrechne, dann weiss ich,dass sich 15589 zu 8Std39min (duch 24/3600 usw teilen) umwandeln lässt. Gibt es dafür eine Funktion in Matlab, sodass ich es nicht mehr per Hand machen muss?


Datestr wandelt serielle Datennummern um und datetime representiert Zeitpunkte, die ich in Jahre, Sekunden, Stunden und Minuten umrechnen kann.

Viele Grüße
Private Nachricht senden Benutzer-Profile anzeigen


wgttzs!
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 62
Anmeldedatum: 02.12.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.01.2022, 21:32     Titel:
  Antworten mit Zitat      
Stand der Dinge:

Code:
A=[15589 23397];


for k=1:numel(A)

h = floor(mi./1800);
rest = mod(mi,1800);

m = floor(rest./30);
rest = mod(rest,30);

s = floor(rest./0.5);
ms = mod(rest,0.5);

DateVector =duration([h s ms])
a=datenum(DateVector)

end


Wie kann ich denn dafür sorgen, dass ich am Ende zwei Zahlen zurückbekomme und die andere nicht immer überschrieben wird?

Irgendwas wird am Ende falsch zurückgeben, sodass ich nicht mehr auf 8:39 komme....
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 23.935
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 11.01.2022, 23:06     Titel:
  Antworten mit Zitat      
Hallo,

ich würde bei Datumsangaben und Zeiten versuchen, möglichst viel mit datetime und duration zu arbeiten. datenum und datestr sehe ich als Relikt aus alten Zeiten an.

Wenn ich das richtig sehe, ist die Abtastzeit 2 Sekunden? Dann:
Code:
t = 2*seconds(15589)
t.Format = "hh:mm:ss"


Wenn das nicht weiterhilft, dann bitte nochmal genauer sagen, was du eigentlich als Ergebnis haben willst. Das ist mir hier nämlich noch nicht klar.

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
 
wgttzs!
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 62
Anmeldedatum: 02.12.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.01.2022, 23:09     Titel:
  Antworten mit Zitat      
Ich würde eigentlich gerne das Ergebnis als serial date number haben....kann ich das ganze als for Schleife mir für beide Zahlen wiederzurückgeben lassen?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 23.935
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 11.01.2022, 23:23     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Ich würde eigentlich gerne das Ergebnis als serial date number haben....

Warum denn? Wie gesagt:
Zitat:
ich würde bei Datumsangaben und Zeiten versuchen, möglichst viel mit datetime und duration zu arbeiten. datenum und datestr sehe ich als Relikt aus alten Zeiten an.

Vor allem: du hast ja nur eine Uhrzeitinformation, welcher Tag soll denn verwendet werden? Das brauchst du ja für das datenum-Format. Beispiel mit heutigem Tag:
Code:
t = datenum(datetime("today") +2*seconds(15589))

Aber wie gesagt: ich weiß nicht, was man damit soll...

Zitat:
kann ich das ganze als for Schleife mir für beide Zahlen wiederzurückgeben lassen?

Ich habe keine Ahnung, was "das ganze" ist, von welchen "beiden Zahlen" du schreibst, geschweige denn wozu man hier eine for-Schleife braucht.

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
 
wgttzs!
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 62
Anmeldedatum: 02.12.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.01.2022, 23:27     Titel:
  Antworten mit Zitat      
Zitat:
Ich habe keine Ahnung, was "das ganze" ist, von welchen "beiden Zahlen" du schreibst, geschweige denn wozu man hier eine for-Schleife braucht.


Zum Beispiel wenn ich ein Vektor habe:A=[15589 23397];

Zitat:
or allem: du hast ja nur eine Uhrzeitinformation, welcher Tag soll denn verwendet werden? Das brauchst du ja für das datenum-Format. Beispiel mit heutigem Tag:


Ich habe leider keinen Tag dafür nur die Uhrzeit...

Danke Harald!
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 23.935
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 11.01.2022, 23:57     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Zum Beispiel wenn ich ein Vektor habe:A=[15589 23397];

.... dann?

Zitat:
Ich habe leider keinen Tag dafür nur die Uhrzeit...

Und wie soll aus nur der Uhrzeit dann dieses serial number date gemacht werden?

Ich mag ja generell kurze Antworten, aber das ist ein wenig zu kurz bzw. zu wenig Info...

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
 
wgttzs!
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 62
Anmeldedatum: 02.12.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.01.2022, 00:26     Titel:
  Antworten mit Zitat      
Code:

A=[15589 23397];

for k=1:numel(A)

t = 2*seconds(k)
t.Format = "hh:mm:ss"

end


Jetzt müsste ich am Ende zwei Werte abspeichern können, aber wie?

Ok, wenn es ohne Tag nicht geht bleibe ich bei der Uhrzeit
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 23.935
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 12.01.2022, 09:10     Titel:
  Antworten mit Zitat      
Hallo,

die for-Schleife ist unnötig.

Code:
A=[15589 23397];
t = 2*seconds(A)
t.Format = "hh:mm:ss"


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
 
wgttzs!
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 62
Anmeldedatum: 02.12.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.01.2022, 13:30     Titel:
  Antworten mit Zitat      
Jetzt ist es mir wieder eingefallen. Durch t.Format habe ich einen duration array, aber ich brauche einen double array, um das ganze später in einem table abzuspeichern.

Bis jetzt habe ich nur Lösungen gefunden, die dann die Differenz zwischen der ersten Uhrzeit, umrechnet. Aber wie rechne ich die einzelnen Uhrzeit in double um
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 23.935
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 12.01.2022, 22:33     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
aber ich brauche einen double array, um das ganze später in einem table abzuspeichern.

In einem Table können die Variablen (Spalten) unterschiedliche Datentypen haben, also auch duration. Das ist ja gerade einer der Vorteile von Tables.

Zitat:
Aber wie rechne ich die einzelnen Uhrzeit in double um

Wenn du sagen kannst, welches Ergebnis du bekommen willst, ist das wahrscheinlich kein Problem. Das ist mir aber (weiterhin) nicht klar. Nur zwei von vielen Möglichkeiten wären:
* eine Zahl zwischen 0 (= 0 Uhr) und 1 (= 24 Uhr)
* eine Zahl zwischen 0 (= 0 Uhr) und 24 (= 24 Uhr)
Selbst dein A enthält ja Doubles. Wie genau sollen also aus den existenten Doubles die gewünschten entstehen?

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
 
wgttzs!
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 62
Anmeldedatum: 02.12.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.01.2022, 22:58     Titel:
  Antworten mit Zitat      
Ich speicher nachher noch die Werte ab in einen double array, der nachher zu einem table wird. Dann bekomme ich folgende Fehlerquelle:

Code:
Unable to perform assignment because value of type 'duration' is not convertible to 'double'.

Caused by:
    Error using duration/double (line 1075)
    Undefined function 'double' for input arguments of type 'duration'. To convert from durations to numeric, use the
    SECONDS, MINUTES, HOURS, DAYS, or YEARS functions.


Zitat:
* eine Zahl zwischen 0 (= 0 Uhr) und 1 (= 24 Uhr)

Dann dieses Format und den vielen

Ich hoffe du blickst jetzt mehr durch
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 23.935
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 12.01.2022, 23:08     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Ich speicher nachher noch die Werte ab in einen double array, der nachher zu einem table wird.

Was hält dich davon ab, die Werte direkt in den Table zu schreiben?
Generell bitte nicht umschreiben, was du machst, sondern den entsprechenden Code posten. Das ist so viel verständlicher.

Zitat:
eine Zahl zwischen 0 (= 0 Uhr) und 1 (= 24 Uhr)

Das dürfte einfach sein:
Code:
A=[15589 23397];
B = A / 43200;


Zitat:
Ich hoffe du blickst jetzt mehr durch

Wenn die Problematik ausreichend klar beschrieben ist, klappt das meistens recht gut.

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
 
wgttzs!
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 62
Anmeldedatum: 02.12.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.01.2022, 23:14     Titel:
  Antworten mit Zitat      
Nur als Ergänzung wie würdest du denn die Zahl umwandeln, wenn du das Fromat zwischen 0 (= 0 Uhr) und 24 (= 24 Uhr) wählst?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 23.935
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 12.01.2022, 23:16     Titel:
  Antworten mit Zitat      
Hallo,

Code:
A=[15589 23397];
B = A / 43200 * 24;


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
.


goMatlab ist ein Teil des goForen-Labels
goForen.de goMATLAB.de goLaTeX.de


 Impressum  | Nutzungsbedingungen  | Datenschutz  | Werbung/Mediadaten | Studentenversion | FAQ | goMatlab RSS Button RSS


Copyright © 2007 - 2022 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
Partner: LabVIEWforum.de

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.