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

Zeitvektor auf Konsistenz prüfen

 

balli1187
Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 15.06.12
Wohnort: Magdeburg
Version: 2007b
     Beitrag Verfasst am: 01.03.2017, 17:48     Titel: Zeitvektor auf Konsistenz prüfen
  Antworten mit Zitat      
Hallo,

ich habe häufig mit Zeitreihen im 15min Raster zu tun, welche ich zumeist aus Excel oder CSV-Dateien importiere.

Ich suche nach einer Möglichkeit zu prüfen ob auch alle Werte vorhanden sind oder ob meine importierten Daten Lücken enthalten.

Bsp:
...
01.04.2016 13:00:00
01.04.2016 13:15:00
01.04.2016 13:45:00
01.04.2016 14:00:00

Im Beispiel fehlt ganz offensichtlich der Wert für 13:15:00. Beim Import werden die Daten immer in eine passende Zahl umgewandelt, welche ich mit datestr() wieder in den oben stehenden Ausdruck umwandeln kann.
Ich habe es mit unterstehender Funktion versucht, allerdings kriege ich dort wesentlich mehr Fehlstellen angezeigt als es wirklich gibt.

function [anz, idx]=isDateConsistent(InputDateVec,timestep)
% Funktion prüft ob der Abstand der Zeitstempel gleichbleibend ist
% InputDateVec: zu prüfender Zeitvektor
% timestep: Sollabstand zwischen zwei Zeitstempeln
% anz: Anzahl an Fehlstellen
% idx: Index vor Fehlstellen
jj=1;
for ii=2:1:length(InputDateVec)
    div=InputDateVec(ii,1)-InputDateVec(ii-1,1);
    if div ~= timestep
        idx(jj,1)=ii-1;
        jj=jj+1;
    end
end
anz=jj;
end


Die Funktion ist äußerst simpel und vielleicht auch nicht gerade besonders galant für diese Aufgabe - sollte aber eigentlich funktionieren... Meine Vermutung ist, dass es irgendwas mit der Konvertierung datenum - datestr zu tun hat aber weiter weiß ich nicht.
Habe ich irgendwo einen Denkfehler?

Dank im Voraus und Grüße,
Stephan
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 01.03.2017, 21:45     Titel:
  Antworten mit Zitat      
Hallo,

mit datetime wäre das deutlich leichter. Falls du aber tatsächlich noch 2007b verwendest, ist das allerdings ein Problem, da es datetime erst ab 2014b gibt.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
balli1187
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 15.06.12
Wohnort: Magdeburg
Version: 2007b
     Beitrag Verfasst am: 01.03.2017, 22:03     Titel:
  Antworten mit Zitat      
Hallo Harald,

danke für deine nachricht. Ich weiß ich bin da etwas hinter'm mond aber was soll man machen....
Wie würde es mit datetime gehen? Mein Zugang zu einer 2015 Version ist zwar zeitlich eingeschränkt aber eventuell lässt sich das dann dort umsetzen.

Grüße, Stephan
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 01.03.2017, 23:45     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
aber was soll man machen....

Was spricht denn gegen eine Aktualisierung?

Mit datetime könntest du wohl dieselbe Funktion schreiben, nur dass es funktionieren würde, da die Unterschiede zwischen datetimes exakt sind. Bei der Umwandlung in datenums sind sie das augenscheinlich nicht.

Wenn du statt div ~= timestep das verwendest:
abs(div - timestep) > 0.01*timestep
dann sollte es auch so gehen.

Eine Schleife sollte da übrigens unnötig sein. Aus dem Stand würde ich sagen:
Code:
div=diff(InputDateVec);
missing = abs(div - timestep) > 0.01*timestep;
anz = sum(missing);
idx = find(missing);


Grüße,
Harald
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 - 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.