Umwandlung von Epoche nach Datum in Matlab

7

Ich habe ein Array von Epoch Millisekunden (Array von Zahlen) in Matlab. Ich möchte diese in UTC-Datum-Uhrzeit-Format konvertieren, wie DD-MM-YYYY HH: MM.

Gibt es eine vordefinierte Matlab-Methode, oder muss ich meine eigene Funktion schreiben?

    
Erol 30.09.2012, 14:09
quelle

3 Antworten

19

Angenommen, Sie beginnen mit einem Vektor time_unix , dann:

%Vor%

Anmerkungen:

1) Siehe die Definition der Matlab-Zeit.

2) 8.64e7 ist die Anzahl der Millisekunden an einem Tag.

3) Matlab wendet keine Zeitzonenverschiebung an, daher ist das Ergebnis dieselbe UTC-Zeit.

4) Beispiel für die Rückwärtstransformation:

%Vor%

Zusammenfassend gibt es zwei Funktionen:

%Vor%

Die Matlab-Zeit hier ist numerisch. Sie können es immer in einen String konvertieren, indem Sie datastr ()

verwenden     
Serg 30.09.2012, 17:28
quelle
1

Ich habe den obigen Code versucht, aber die Ergebnisse waren falsch. Ich erkannte, dass der Hauptfehler mit der unangenehmen Definition der Unix-Zeit (Epochenzeit) zusammenhängt. Unix-Zeit (Epochenzeit) ist definiert als die Anzahl der Sekunden nach dem 1.1-1970 , 00h: 00, nicht die Anzahl von ** Milli ** Sekunden ( Ссылка ). Mit dieser Definition sollte die Unix-Zeit daher durch 8.64e5 statt 8.64e7 geteilt werden.

Außerdem scheint datenum('1970', 'yyyy') nicht zur gewünschten Referenzzeit von 1-1-1970, 00h: 00 zu führen.

Hier ist mein verbesserter Code:

%Vor%     
mbrennwa 28.05.2014 12:31
quelle
0

Serg's Antwort ist, was ich normalerweise benutze, wenn ich in MATLAB arbeite. Heute wollte ich die Konvertierung zu Datum in MATLAB durchführen, wie der Titel sagt - ohne die im Fragetext angegebene Datumszeichenkonvertierung - und die Datumsnummer aus der Shell ausgeben.

Hier ist, was ich für die abgerundete Datumsnummer festgelegt habe:

%Vor%

Dies ist wirklich nur das Bash-Äquivalent von dem, was Sie erwarten würden: 719529 ist das Datum der Epoche (1970-01-01 oder datenum(1970,1,1) in MATLAB). Ich fummle auch in letzter Zeit durch ksh und es scheint, dass dies dort mit:

getan werden kann %Vor%

Als Nebenübung habe ich den Dezimalteil wieder auf das Datum in bash gesetzt - ich habe mich in ksh nicht gestört, aber es ist nur arithmetisch und geht ähnlich:

%Vor%     
sage 25.09.2014 16:45
quelle

Tags und Links