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

Zeitumrechnung: Sekunden in Stunden, Minuten

 

tschucko

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.11.2011, 22:20     Titel: Zeitumrechnung: Sekunden in Stunden, Minuten
  Antworten mit Zitat      
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?

Ich bin für eure Antwort sehr dankbar.

Gruß
tschucko


lilov
Forum-Century

Forum-Century


Beiträge: 193
Anmeldedatum: 05.05.10
Wohnort: Bremerhaven
Version: ---
     Beitrag Verfasst am: 16.11.2011, 22:45     Titel:
  Antworten mit Zitat      
Hallo,

gibt es nicht. Kann man aber selbst berechnen:

Code:


Sec = 12605;
HSM = [floor(Sec/3600),floor(rem(Sec,3600)/60),floor(rem(rem(Sec,3600),60))]
 


Gruß,

Hristo
Private Nachricht senden Benutzer-Profile anzeigen
 
lilov
Forum-Century

Forum-Century


Beiträge: 193
Anmeldedatum: 05.05.10
Wohnort: Bremerhaven
Version: ---
     Beitrag Verfasst am: 16.11.2011, 22:51     Titel:
  Antworten mit Zitat      
die Funktion würde dann so aussehen:

Code:


function hourmin = decimal2hourmin(Seconds)

   
    hourmin = [floor(Seconds/3600),...
               floor(rem(Seconds,3600)/60),...
               floor(rem(rem(Seconds,3600),60))];

end

 
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 16.11.2011, 23:22     Titel: Re: Zeitumrechnung: Sekunden in Stunden, Minuten
  Antworten mit Zitat      
Hallo tschucko,

Code:
v = datevec(12600 / 86400);
t = v(4:6);   % [3, 30, 0]

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
tschucko

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.11.2011, 20:54     Titel:
  Antworten mit Zitat      
hallo,

ich möchte mich bei euch für eure Hilfe bedanken.


Nochmal vielen Dank und Gruß
tschucko
 
MaraBelle
Forum-Anfänger

Forum-Anfänger


Beiträge: 36
Anmeldedatum: 24.02.15
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 13.05.2015, 09:38     Titel:
  Antworten mit Zitat      
lilov hat Folgendes geschrieben:

Code:

Sec = 12605;
HSM = [floor(Sec/3600),floor(rem(Sec,3600)/60),floor(rem(rem(Sec,3600),60))]
 



Vielen Dank!
Hatte ein ähnliches Problem, habe das Ganze dann noch erweitert, damit es in eine von MATLAB "erkennbaren" Zeit umgewandelt wird:

Code:
Sec = 12605;
HSM = [floor(Sec/3600),floor(rem(Sec,3600)/60),floor(rem(rem(Sec,3600),60))]
Zeit= duration(HSM(1),HSM(2),HSM(3))


Dies ergibt dann eine Zeit im Format 'hh:mm:ss', über die man dann z.B. auch plotten kann:

Code:
Zeit =
   03:30:05
Private Nachricht senden Benutzer-Profile anzeigen
 
his hawkness
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 08.10.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.07.2015, 14:36     Titel: Erweiterung
  Antworten mit Zitat      
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!
Private Nachricht senden Benutzer-Profile anzeigen
 
MaraBelle
Forum-Anfänger

Forum-Anfänger


Beiträge: 36
Anmeldedatum: 24.02.15
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 30.07.2015, 15:23     Titel: Re: Erweiterung
  Antworten mit Zitat      
Hallo his hawkness,

his hawkness hat Folgendes geschrieben:
..., 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...

Ich hoffe, das hilft dir trotzdem weiter!
Private Nachricht senden Benutzer-Profile anzeigen
 
his hawkness
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 08.10.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.07.2015, 15:39     Titel:
  Antworten mit Zitat      
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.
Private Nachricht senden Benutzer-Profile anzeigen
 
MaraBelle
Forum-Anfänger

Forum-Anfänger


Beiträge: 36
Anmeldedatum: 24.02.15
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 30.07.2015, 16:57     Titel:
  Antworten mit Zitat      
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...
Private Nachricht senden Benutzer-Profile anzeigen
 
his hawkness
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 08.10.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.07.2015, 17:02     Titel:
  Antworten mit Zitat      
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!
Private Nachricht senden Benutzer-Profile anzeigen
 
MaraBelle
Forum-Anfänger

Forum-Anfänger


Beiträge: 36
Anmeldedatum: 24.02.15
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 30.07.2015, 17:47     Titel:
  Antworten mit Zitat      
his hawkness hat Folgendes geschrieben:

Habe über die Sample_rate ja meine Abtastrate und habe den Anfang der Messung als Uhrzeit.

Mit Abtastrate meinst du die 20kHz bzw. alle 0.05 msec, oder?

his hawkness hat Folgendes geschrieben:

Vielen, vielen Dank schon mal für Deine Hilfe.

Dafür nicht... Hab hier selbst schon oft Hilfe gefunden, jetzt bin ich froh, dass ich mal helfen kann und um was zurückzugeben in die community.

his hawkness hat Folgendes geschrieben:

Übrigens habe ich R2014b, da gibt es die Funktion "duration" leider noch nicht!

Ok, ich habe R2015a. Was es da bei R2014b als Alternative gibt, weis ich leider nicht... Aber das findet sich ggf. in einem andere thread...

Ok, ich probier mal bissl was aus...
Private Nachricht senden Benutzer-Profile anzeigen
 
MaraBelle
Forum-Anfänger

Forum-Anfänger


Beiträge: 36
Anmeldedatum: 24.02.15
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 30.07.2015, 18:20     Titel:
  Antworten mit Zitat      
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...
Private Nachricht senden Benutzer-Profile anzeigen
 
MaraBelle
Forum-Anfänger

Forum-Anfänger


Beiträge: 36
Anmeldedatum: 24.02.15
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 30.07.2015, 18:30     Titel:
  Antworten mit Zitat      
his hawkness hat Folgendes geschrieben:

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...
Private Nachricht senden Benutzer-Profile anzeigen
 
MaraBelle
Forum-Anfänger

Forum-Anfänger


Beiträge: 36
Anmeldedatum: 24.02.15
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 31.07.2015, 09:37     Titel:
  Antworten mit Zitat      
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))

                if c1==tmax
                    break  
                end
                z=z+1;
                z1=z1+1;
            end
        end
    end
end

% Zeit.Format='hh:mm:ss.SSSSS'    % Format so einstellen, damit die Millisekunden auch sichtbar sind.
 




his hawkness hat Folgendes geschrieben:


Ü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?
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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