Verfasst am: 16.11.2011, 22:20
Titel: Zeitumrechnung: Sekunden in Stunden, Minuten
hallo,
ich bin Matlab-Neuling. Ich habe versucht einen Matlab-Befehl zu finden,der Sekunden in Stunden und Minuten und Sekunden umrechnet, bin aber erfolglos. Kennt irgendeiner von euch den Befehl ?
Der gibt
z.B 12600s = 3h30min 0senkunden
aus.
Oder vielleicht ein Matlab-Script?
Hallo Leute,
mir hilft dieser thread grad sehr weiter, allerdings bräuchte ich dabei noch eine Erweiterung, um neben Stunden/Minuten/Sekunden auch noch die Millisekunden angeben zu lassen und diese auch noch als Dezimalzahl bzw. Bruchteile von Millisekunden.
Hat dafür jemand ne Idee? Ich schaff es nicht!
..., allerdings bräuchte ich dabei noch eine Erweiterung, um neben Stunden/Minuten/Sekunden auch noch die Millisekunden angeben zu lassen und diese auch noch als Dezimalzahl bzw. Bruchteile von Millisekunden.
Hat dafür jemand ne Idee? Ich schaff es nicht!
Hast du die ursprüngliche Zeit dann in Sekunden als Kommazahl?
Falls ja, würde ich es auf Basis des ursprünglichen Codes so machen:
Code:
Sec_float = 12605.1234;
Sec = floor(Sec_float) %rundet auf die nächstniedrige ganze Zahl, also Sekunden)
Millisec=(Sec_float-Sec)*1000% Sekundenbruchteile in Millisekunden umrechnen
HSM = [floor(Sec/3600),floor(rem(Sec,3600)/60),floor(rem(rem(Sec,3600),60))]
HSM(1,4)=Millisec % Die Variable HSM um die Millisekunden erweitern.
Zeit= duration(HSM(1),HSM(2),HSM(3),HSM(4))
Zeit.Format='hh:mm:ss.SSSSS' % Format so einstellen, damit die Millisekunden auch sichtbar sind.
Allerdings frage ich mich, woher du so genaue Werte (Bruchteile von Millisekunden) herbekommst. Ist nicht sehr üblich, die Darstellung oben kann diese Bruchteile von Millisekunden daher auch nur als Nachkommastelle der Sekunden (ab der 4. Stelle) angeben. Nach Wunsch der Anzahl der Stellen noch weitere SSS dranhängen...
Hallo Marabelle,
danke schon mal, ich probier das gleich mal aus.
Die genauen Daten bekomme ich aus einer Messung, bei der wir mit 20 kHz abgetastet haben.
Die Zeit möchte ich mir selber über die sample-rate bzw. Datenpunkte berechnen. Die Mess-Software zeigt die Zeit absolut an, z.B.: 08:05:31:789.65
Die letzte Ziffer nimmt immer "nur" die Werte 0 oder 5 für aufeinanderfolgende Messwerte an, das entspricht dann 20.000 Hz.
Habe ich das richtig verstanden, dass deine Messsoftware dir die Messpunkte schon im Format hh:mm:ss:ms.xx ausgibt? Dann verstehe ich nicht, wie du das hier diskutierte Skript darauf anwenden willst. Falls du die Zeiten in Hz oder kHz ausgespuckt bekommst und am es am Ende im Format hh:mm:ss:ms.xx angezeigt werden soll, würde ich evtl. anders vorgehen. Dann macht es ja mehr Sinn, zuerst in Millisekunden umzurechnen statt in Sekunden und von dort ausgehend das obige Skript umgeändert anzuwenden. Um dir konkret zu helfen bräuchte ich mehr Infos, wie genau du die Zeit vom Programm ausgespuckt bekommst. Oder willst du die Datenpunkt selbst erstellen? Das kam leider nicht so ganz rüber...
Ja, ich möchte den Zeitstempel selbst erstellen. Die Zeit aus der Messsoftware ist ziemlich gut, aber eher nur, wenn man auch mit der Software auswertet. Und die Auswertung muss ich in MATLAB machen.
Habe über die Sample_rate ja meine Abtastrate und habe den Anfang der Messung als Uhrzeit. Daraus möchte ich gerne für alle Messwerte relative und absolute Zeiten berechnen können.
N bisschen verwirrend, oder?
Vielen, vielen Dank schon mal für Deine Hilfe.
Übrigens habe ich R2014b, da gibt es die Funktion "duration" leider noch nicht!
So, hab etwas rumprobiert... Hier ein Beispiel für 10 s Messzeit:
Code:
t=10; % Messzeit in Sekunden
tmax=t*1000 ; % benötigte Länge der Variable x % % hier: tmax=10sec*1000msec =10000 msec % 0.05 msec Schritte
x=(0:0.05:tmax)' ; % x'->Transponieren, damit Werte untereinander stehen und nicht nebeneinander
for k=1:4
hmax=tmax/0.05+1; % benötigte Länge der Variable HSM % Hier: hmax=(tmax/0.05+1): 10000/0.05+1=200001 -> Bei längerer Messzeit entsprechend oben anpassen
HSM(1:hmax,k)=0;
end for c=1:hmax
s=x(c,1);
HSM(c,1)= floor(s/3600000); % Stunden
HSM(c,2)=floor(rem(s,3600000)/60000); % Minuten
HSM(c,3)=floor(rem(rem(s,3600000),60000)/1000); % Sekunden
HSM(c,4)=rem(rem(rem(s,3600000),60000),1000); % Rest=Millisekunden end
Ich wollte es erst mit einer Stunde Messzeit machen, aber das hat sehr lange gedauert und irgendwann kam die Fehlermeldung: Out of Memory. Weis leider nicht, wie du das in den Griff bekommen könntest. Vielleicht hast du aber auch mehr Arbeitsspeicher als ich... Sonst musst du irgendwie die Messdaten aufteilen oder eben die "richtigen Experten" hier fragen... Mach am besten einen neuen Thread dazu auf.
Und einen Ersatz für duration musst du dann noch finden... Vielleicht über
strcat
oder so...
Die Zeit aus der Messsoftware ist ziemlich gut, aber eher nur, wenn man auch mit der Software auswertet. Und die Auswertung muss ich in MATLAB machen.
Was mir noch eingefallen ist: eigentlich müsstest du die Zeit aus dem Messprogramm auch in Matlab als string einlesen können und dann das Format hh:mm:ss:ms.xx in ihre einzelnen "Bestandteile" aufteilst, z.B. immer beim Doppelpunkt. Entweder schon beim einlesen mit Doppelpunkt als seperator oder es gibt auch eine Funktion dazu, ich weis gerade leider nur nicht mehr, wie die heißt... Wenn es mir wieder einfällt, poste ich es noch...
Warum eigentlich so kompliziert mit umrechnen der Sekunden oder Millisekunden? Eigentlich könntest du es doch einfach über eine for-Schleifen Verschachtelung erstellen, etwa so:
Code:
z=1;
tmax=2; % Messzeit in Stunden z.B. hier 2 h for c1=0:tmax % Schleife für Stunden for c2=0:59% Schleife für Minuten for c3=0:59% Schleife für Sekunden
z1=0;
for c4=1:20000% Schleife für Millisekunden
HSM(z,1)= c1; % Stunden
HSM(z,2)= c2; % Minuten
HSM(z,3)= c3; % Sekunden
HSM(z,4)=0.05*z1; % Millisekunden % Zeit= duration(HSM(z,1),HSM(z,2),HSM(z,3),HSM(z,4))
Übrigens habe ich R2014b, da gibt es die Funktion "duration" leider noch nicht!
In der Beschreibung steht aber, dass es ab R2014b eingeführt wurde:
http://de.mathworks.com/help/matlab/ref/duration.html
(Ganz unten: "Introduced in R2014b")
entweder hast du noch eine ältere Version, oder du musst nochmal schauen.
Falls du schon einen neuen Thread erstellt hast, kannst du dann den Link hier posten?
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.