datum in sekunden < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 12:57 Mo 30.06.2008 | Autor: | tieger |
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt
ich will datumsdaten in sekunden umrechnen.
mein nullpunkt ist morgends 0uhr, was bei meinen daten wie folgt aussehen würde: 00:00:00.00
also mit zehntelsekunden: HH:MM:SS:ZZ
ich hab diese daten in "uhrzeit" eingelesen:
uhrzeit =
'00:01:01.11'
'00:01:01.12'
'00:01:01.13'
'00:01:01.14'
und so umgewandelt:
uhrzeit =
'00010111'
'00010112'
'00010113'
'00010114'
ich weiß nicht, ob das wichtig ist, aber das ganze ist ein cell array.
die FRAGE:
wie bekomm ich jetzt meine gesamtsekunden seit 0uhr aus meiner uhrzeit??
|
|
|
|
Hallo,
anscheinend hast du bei deiner Umwandlung nur die Trennzeichen weggelassen, was im Grunde überflüssig war. Aber auch damit geht es. Ich will es mal für eine Uhrzeit vormachen:
u1 = '01203315' %also 01:20:33.15
Die Gesamtsekunden seit Mitternacht bekommen wir, wenn wir den String in Zweiergruppen umbrechen, die Teile mit den Umrechnungsfaktoren auf Sekunden multiplizieren und die Produkte aufsummieren (oder das Ganze als Skalarmultiplikation auffassen):
sek = [3600 60 1 0.01] * str2num(reshape(u1, 2, [])')
Die Funktion reshape übernimmt das Umbrechen, danach werden einfach zwei Vektoren skalar multipliziert.
Einfacher wird es, wenn man gleich den ursprünglichen Uhrzeitstring verarbeitet:
u2 = '01:20:33.15'
sek2 = (mod(datenum(u2), 1)) * 86400
Gruß
Martin
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 09:06 Di 01.07.2008 | Autor: | tieger |
Hi,
danke für die hilfe.
ja, ich habe einfach nur die Trennzeichen weggemacht.
mit datenum hat es bei mir nicht funktioniert, weil da nirgends was von zehntelsekunden stand bei "help datenum"
zu deiner antwort:
das system mit "sek2" hat funktioniert. für mich ist das dann erledigt.
Vielen Dank
vielleicht noch für dich als feedback:
das mit "sek" hat nicht funktioniert:
uhr =
'00010111'
sek = [3600 60 1 0.01] * str2num(reshape(uhr, 2, [])')
??? Error using ==> reshape
Product of known dimensions, 2, not divisible into total number of elements, 1.
oder:
sek = [3600 60 1 0.01] * str2num(reshape(uhr, 1, [])')
??? Error using ==> str2num
Requires string or character array input.
mir sagt das alles nicht so viel, weil ich mich damit noch nicht soo gut auskenne.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 20:38 Di 01.07.2008 | Autor: | Martin243 |
Hallo,
dass die eine Lösung funktioniert, ist prima. Zu dem anderen ist vielleicht zu sagen, dass hier nur einzelne Strings verarbeitet werden, keine Cell Arrays. Also müsste man hier vielleicht zuerst die Elemente des Cell Arrays nacheinander extrahieren und Stück für Stück verarbeiten.
Gruß
Martin
|
|
|
|