Datum als integer date vector berechnen -Fehler?
Foehnix
Forum-Newbie
Beiträge: 4
Anmeldedatum: 18.05.09
Wohnort: Innsbruck
Version: ---
Verfasst am : 17.06.2010, 13:34
Titel : Datum als integer date vector berechnen -Fehler?
Hallo
ich habe eine function, die mir 10min-Datenwerte in 60min-Mittel konvertieren soll, jedoch tritt anfangs folgendes Problem auf:
das programm sdate2YYYYMMDDhhmm schaut so aus:
Code:
[ YYYY,MM,DD,hh,mm,ss ] = datevec ( sdate) ;
sdate( ss >= 30 ) = sdate( ss >= 30 ) + 1 /1440 ; % add one minute to round to full minutes if necessary
[ YYYY,MM,DD,hh,mm,ss ] = datevec ( sdate) ;
YYYYMMDDhhmm = YYYY*1E8 + MM*1E6 + DD*1E4 + hh*1E2 + mm;
date_old(1) schaut so aus: 733743
datebeg schaut so aus: 2.0081e+11
sollte aber eigentlich so aussehen 200812010100 (für 1.12.2008, 01:00 UTC)
das sdate2YYYYMMDDhhmm - Programm sollte einen integer date vector ausspucken und kein datum mit komma.
Ich find den Fehler nicht.
Für jedwede Hilfe bin ich sehr dankbar!
Gruß,
Matlabanfänger
denny
Supporter
Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
Verfasst am : 17.06.2010, 15:27
Titel :
Hallo
so:
Code:
[ YYYY,MM,DD,hh,mm,ss ] = datevec ( sdate) ;
sdate( ss >= 30 ) = sdate( ss >= 30 ) + 1 /1440 ; % add one minute to round to full minutes if necessary
[ YYYY,MM,DD,hh,mm,ss ] = datevec ( sdate) ;
YYYYMMDDhhmm = uint64( YYYY*1E8 + MM*1E6 + DD*1E4 + hh*1E2 + mm) ;
Foehnix
Themenstarter
Forum-Newbie
Beiträge: 4
Anmeldedatum: 18.05.09
Wohnort: Innsbruck
Version: ---
Verfasst am : 17.06.2010, 16:20
Titel :
dann kommt die fehlermeldung
das ist die function datevector....
Code:
function YYYYMMDDhhmm_vec = datevectorYYYYMMDDhhmm( YYYYMMDDhhmm_beg,YYYYMMDDhhmm_end,mm_inc)
=====================================================================
% --- split up integer dates into its component (call function, see above):
[ YYYY_beg,MM_beg,DD_beg,hh_beg,mm_beg] = splitupYYYYMMDDhhmm( YYYYMMDDhhmm_beg) ;
[ YYYY_end,MM_end,DD_end,hh_end,mm_end] = splitupYYYYMMDDhhmm( YYYYMMDDhhmm_end) ;
% --- convert beging and end integer dates to minutes:
minutes_beg = fix ( YYYYMMDDhhmm2sdate( YYYYMMDDhhmm_beg) ) *1440 + hh_beg*60 + mm_beg;
minutes_end = fix ( YYYYMMDDhhmm2sdate( YYYYMMDDhhmm_end) ) *1440 + hh_end*60 + mm_end;
% --- create new minutes date vector:
minutes_vec = [ minutes_beg : mm_inc : minutes_end] ';
% --- convert minutes date vector back to integer date vector:
YYYYMMDDhhmm_vec = sdate2YYYYMMDDhhmm( minutes_vec./1440 ) ;
denny
Supporter
Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
Verfasst am : 18.06.2010, 09:28
Titel :
Hallo
habe nicht gedacht dass du weiter damit rechnen musst,
probiere es noch mit INT64.
Code:
[ YYYY,MM,DD,hh,mm,ss ] = datevec ( sdate) ;
sdate( ss >= 30 ) = sdate( ss >= 30 ) + 1 /1440 ; % add one minute to round to full minutes if necessary
[ YYYY,MM,DD,hh,mm,ss ] = datevec ( sdate) ;
YYYYMMDDhhmm = int64( YYYY*1E8 + MM*1E6 + DD*1E4 + hh*1E2 + mm) ;
sonst musst du die Werte in gleichen Format konvertieren,
Einstellungen und Berechtigungen
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
| RSS
Hosted by:
Copyright © 2007 - 2024
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.