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

Datumsangaben unterscheiden

 

Hugo der Troll

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.11.2011, 15:06     Titel: Datumsangaben unterscheiden
  Antworten mit Zitat      
Hallo,

ich habda da ein ziemlich eckliges Problem. Ich bin gerade dabei ein relativ Umfangreiches Programm zur Auswertung von Messdaten zu schreiben.

Ich habe verschiedene Zeitformate vorliegen. Diese Zeitformate gehören zu ein Experiment. Die entstehen dadurch das die Messreihen über verschiedene Programme aufgenommen werden.

z.B. Messreihe eins hat folgenden Eintrag:
x1= '12:37:47'
y1= 123.56

und die zugehörige Messreihe 2:
x2='10.11.2011 12:35:10'
y2= 4.34

Nehmen wir mal an, dies seien die Startzeitpunkte eines Experiments. Wenn ich nun entscheiden will welcher Zeitpunkt als erstes lag und die Messreihe von "Null" an in Minuten zählen soll. Würde man nun wahrscheinlich denken das folgende Routine ausreicht:

Code:

x1=datenum(x1,'HH:MM:SS');
x2=datenum(x2,'dd.mm.yyyy HH:MM:SS');

if x1 > x2
         startzeit=x2;
     else startzeit=x1;
end

rel_x1=x1-startzeit;
rel_x2=x2-startzeit;


die relativen Werte könnte man nun z.B. in Minuten umrechnen mit:

Code:

time_x1=rel_x1*(60*24);
time_x2=rel_x2*(60*24);


Und meine Zeitangabe für das Experiment wäre in Minuten umgerechnet, bezogen auf ein gemeinsamen Startzeitpunkt.

Das Problem ist nun das diese Befehlsfolge nur funktioniert wenn BEIDE Zeitformate vorher gleich waren. z.B.:

x1='10.11.2011 12:37:47'
x2='10.11.2011 12:35:10'

Dies ist leider nicht der Fall. Daher ist das ergebnis eher nicht zufrieden stellend.

Wenn nehmlich eine Datumsangabe fehlt tut Matlab so, als wäre das Datum der 01.01 des laufenden Jahres. somit sind die Werte vollkommen verfälscht.

Hat wer eine Idee dieses Problem zu lösen, ohne das der Input (siehe oben) verändert werden muss?

grüße,
Hugo der Troll


Hugo der Troll

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.11.2011, 17:04     Titel:
  Antworten mit Zitat      
nach langen Grübeln hab ich die Antwort gefunden. Und die Antwort ist erschreckend einfach:

Code:

    % von der berechneten Zeitwerten wird jeweils das Jahr abgezogen

    x1=x1-datenum(horzcat('01.01.',num2str(year(date))),'dd.mm.yyyy');

    datum=cell2mat(x2);
    x2=x2-datenum(datum(1:11),'dd.mm.yyyy');

    if (x1 - x2) < 0
        startzeit=x1;
    else startzeit=x2;
    end
   
    rel_x1=x1-startzeit;
    rel_x2=x2-startzeit;
 
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
.





 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.