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

Befehle datenum und datestr - Genauigkeiten

 

EA

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.01.2013, 10:44     Titel: Befehle datenum und datestr - Genauigkeiten
  Antworten mit Zitat      
Hi,
ich hab das Problem, dass beim Auslesen aus Daten aus einem Zeitvektor bestimmte Zeitstempel nicht gefunden werden. Es erscheint mir, als handle es sich um Ungenauigkeiten bei den Befehlen datestr und datnum. Um zu zeigen, was ich meine, folgendes Skript. Die Frage ist, warum überhaupt Nullen ausgegeben werden?

Code:

timeVec = (734000:1/144:735000+143/144)';
strings=datestr(timeVec);
ergebnis=datenum(strings)==timeVec;
nullen=find(ergebnis==0);
anzNullen=sum(ergebnis==0)
 

Interessant ist übrigens, dass bei anderen Endwerten für timeVec eine andere Anzahl an Nullen ausgegeben wird.

Cya,
[/code]EA


Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 07.01.2013, 11:32     Titel:
  Antworten mit Zitat      
Ein Testskript ist ansich sehr hilfreich, aber hier ist es ja nicht die echte Applikation, sondern nur der Test - und ich würde sagen das Problem liegt im Test selbst. Es ist einfach nicht sinnvoll DOUBLEs mit == zu vergleichen.

Wenn es also um "Zeitstempel finden" geht, gilt es anders vorzugehen. Spezifischere Tipps bei spezifischerer Fragestellung Wink

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
EA

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.01.2013, 11:52     Titel:
  Antworten mit Zitat      
Danke für die Antwort.
Ich definiere in meinem Skript Start- und Endzeitpunkt über Tag, Monat, Jahr, Minute und Stunde. Die Angaben erfolgen minimal im 10Min Raster(1/144 von einem Tag). Das Skript soll mir nun die Indizes im Zeitvektor (timeVec) ausgeben(mach ich über den "find" Befehl), der auf die definierten Start- und Enddaten zutrifft. Das benötige ich um eine Datenmatrix (welche einen größeren Zeitbereich enthält als von Start bis Enddatum) auf den definierten Zeitbereich zu verkleinern bzw. einzuschränken. Ist das verständlich?
Ich kann keine umfangreichen Skripte abdrucken, da das nicht öffentlich werden darf. Deshalb versuch ich das mal Schritt für Schritt zu erklären.
Cya,
EA
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 07.01.2013, 11:55     Titel: Re: Befehle datenum und datestr - Genauigkeiten
  Antworten mit Zitat      
Hallo EA,

Standard-Beispiele:
Code:
any(0:0.1:1 == 0.3)
0.3 - 0.2 - 0.1 == 0

Der Vergleich mit Floating-Point-Zahlen ist immer tückisch, weil die meisten Dezimal-Zahlen keine exakte Representation als Binärzahlen besitzen.

Sinnvoll wäre entweder ein Vergleich der Strings oder des gerundeten(!) DATEVEC-Formats.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
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 - 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.