Verfasst am: 12.01.2017, 14:25
Titel: Frage bzgl. Datum (suchen nach fehlerhaften Daten mit Datum)
Hallo an alle!
Ich habe folgendes Problem und ich habe dazu im Internet nichts gefunden. Ich hoffe ihr könnt mir vielleicht dabei helfen.
Folgendes Problem:
Ich habe eine Tabelle mit Messdaten und möchte diese Daten auf Vollständigkeit überprüfen. Es ist bekannt, dass die Messdaten alle 10 Minuten gelogget werden mit Datum und Uhrzeit (Siehe Beispieldatei).
Ich möchte nun in Matlab einfach nur abfragen, ob "Messwert 2-Messwert 1= 10 Minuten" ist, denn wenn dies nicht der Fall ist, dann weiß ich ein Messwert fehlt.
Ich habe ein bisschen rumprobiert und verstehe die ganze Materie mit dem Datum nicht.
Hier mal ein Codebeispiel und die Frage dazu:
Code:
%Prüfen der Messdaten mit Ausgabe der fehlenden Werte in eine .txt bzw .csv
%Datei mit folgenden Eigenschaften:
Am Anfang lese ich alles ein, füge das Datum und die Zeit zu einer Spalte zusammen und wandel mir die Zeit mit datestr um. Soweit so gut.
Wenn ich nun aber die Differenz aus den jeweils benachbarten Werten (zeit_temp2) bilde, dann verstehe ich nicht, warum die Differenz zwischen dem 01.01.2013 23:50 und dem 04.01.2013 00:00 (Zeile 144 und 145) genauso groß ist, wie ein Differenz zwischen dem 01.01.2013 00:00 und 01.01.2013 00:10.
Des Weitern würde ich auch gerne mit einer "if-Abfrage" arbeiten.
Code:
abstand=zeit_temp{2,1}-zeit_temp{1,1};
if zeit_temp{i+1,1}-zeit_temp{i,1} == abstand
....usw.
Allerdings ist hier das Problem das meine Abfrage in 99% der Fälle 0 und nicht 1 ausgibt, da anscheinend die Zeit nie genau 10 Minuten ist, sondern in der Regel immer etwas weniger. (Könnte ich mit "<= abstand" umgehen, aber was ist wenn die Messwerte zum Beispiel aus irgendwelchen Gründen einen Abstand von nur 3 Minuten haben, dann wäre es falsch, aber die Abfrage würde trotzdem eine 1 anstatt einer 0 zurückgeben)
Und zu guter Letzt noch eine Frage. Wenn mir zum Beispiel Messwerte fehlen, dann will ich dies in einer .txt dokumentieren. Dafür muss ich dem letzten bekannten Zeitpunkt immer wieder 10 Minuten addieren bis ich wieder Daten "habe". Das habe ich temp_1 ausprobiert, aber meine 10 Minuten entsprechen in dem Beispiel der Zahl 0.00694444496184587. Anders habe ich es nicht hinbekommen, da mir Matlab sonst immer zu ungenaue Werte liefert (z.B. 01.01.2013 10:00:12). Er addiert also entweder zu viel oder zu wenig, aber nie genau 10 Minuten.
Vielen Dank schon mal fürs durchlesen und entschuldigung, falls es etwas undurchsichtig sein sollt. Bei Unklarheiten einfach fragen.
Jetzt bekomme ich in meiner zeit_temp2 exakt einen Wert raus, der 10 Minuten entspricht! Und bei dem Sprung mit den Tagen bekomme ich als Lücke 48:10:00!!!!!!
Ich hab bis jetzt immer mit datenum gearbeitet, aber auf die Idee, dass es noch mehr geben könnte bin ich natürlich nicht gekommen....
Ich habe jetzt mal rumprobiert und bei kleinen zeitlichen Abschnitten funktioniert es. (2014_teil.txt).
Wenn ich nun aber nicht den Auschnitt betrachte, sondern das ganze Jahr (2014.txt), dann zeigt er mir mit dem gleichen Code in der Ausgabedatei am Ende die fehlenden Daten nicht mehr an, die er mir bei der kleinen Datei noch angezeigt hat. (In beiden sind die gleiche fehlenden Tage enthalten 24.09.2014 18:00 bis 25.09.2014)
Es liegt übrigens nicht an dem Beispiel. Matlab reagiert immer so, wenn die Datenmenge zu groß wird, dass er Fehlwerte nicht mehr ausgibt)
Vielen Dank schon mal fürs Durchlesen und ich hoffe jemand weiß weiter, weil ich habe echt schon alles versucht...
Edit: Was mit gerade auffällt ist, dass meine Variable "luecke" bei der großen Datei -87 ist und bei der kleinen 95...???? Ich verstehe es wirklich nicht.
der Code ist recht länglich und schwer zu überblicken. Einiges könnte sicher vereinfacht werden, z.B. kann man Datumsangaben direkt als solche einlesen (%D) und die letzte for-Schleife dürfte sich über logische Indizierung abbilden lassen.
Ansonsten kann ich nur Debugging empfehlen, um das Problem einzugrenzen.
Grüße,
Harald
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
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.