Analysieren von verrauschten Daten

8

Ich habe vor kurzem eine Rakete mit einem barometrischen Höhenmesser gestartet, der auf etwa 10 Fuß genau ist (berechnet anhand der während des Fluges erfassten Daten). Die aufgezeichneten Daten sind in Zeitinkrementen von 0,05 Sekunden pro Probe und ein Diagramm der Höhe über der Zeit sieht ziemlich ähnlich aus wie es sollte, wenn über den gesamten Flug hinausgezoomt wird.

Das Problem ist, wenn ich versuche, andere Werte wie Geschwindigkeit oder Beschleunigung aus den Daten zu berechnen, macht die Genauigkeit der Messungen die berechneten Werte ziemlich wertlos. Mit welchen Techniken kann ich die Daten glätten, um vernünftige Werte für Geschwindigkeit und Beschleunigung berechnen zu können? Es ist wichtig, dass wichtige Ereignisse rechtzeitig erhalten bleiben, insbesondere die 0 für den ersten Eintrag und den höchsten Punkt während des Fluges (2707).

Die Höhendaten folgen und werden in ft über dem Boden gemessen. Das erste Mal wäre 0,00 und jede Probe ist 0,05 Sekunden nach der vorherigen Probe. Der Spike zu Beginn des Fluges ist auf ein technisches Problem zurückzuführen, das beim Abheben aufgetreten ist und das Entfernen des Spikes ist optimal.

Ich habe ursprünglich versucht, lineare Interpolation zu verwenden, indem ich nahegelegene Datenpunkte gemittelt habe, aber es brauchte viele Iterationen, um die Daten für die Integration zu glätten, und die Abflachung der Kurve entfernte die wichtigen Apogäums- und Bodenebenenereignisse.

Alle Hilfe wird sehr geschätzt. Bitte beachten Sie, dass dies nicht der vollständige Datensatz ist und ich nach Vorschlägen für bessere Möglichkeiten zur Analyse der Daten suche, nicht für jemanden, der mit einem transformierten Datensatz antwortet. Es wäre schön, einen Algorithmus an Bord künftiger Raketen zu verwenden, der die aktuelle Höhe / Geschwindigkeit / Beschleunigung vorhersagen kann, ohne die vollständigen Flugdaten zu kennen, obwohl dies nicht erforderlich ist.

%Vor%     
Nick Larsen 24.12.2009, 05:28
quelle

6 Antworten

8

Hier ist meine Lösung mit einem Kalman-Filter . Sie müssen die Parameter einstellen (gerade + - Größenordnungen), wenn Sie mehr oder weniger glätten möchten.

%Vor%     
Federico A. Ramponi 24.12.2009, 06:51
quelle
3

Sie könnten versuchen, die Daten über einen Tiefpassfilter zu übertragen. Dies wird Hochfrequenzrauschen ausgleichen. Vielleicht eine einfache FIR.

Sie können auch Ihre Hauptereignisse aus den Rohdaten ziehen, aber eine Polynomanpassung für Geschwindigkeits- und Beschleunigungsdaten verwenden.

    
Rob Curtis 24.12.2009 06:07
quelle
2

Haben Sie versucht, einen Scroll-Fenster-Durchschnitt Ihrer Werte zu erstellen? Grundsätzlich führen Sie ein Fenster von, sagen wir 10 Werten (von 0 bis 9) aus und berechnen dessen Durchschnitt. dann scrollt das Fenster einen Punkt (von 1 bis 10) und berechnet neu. Dies glättet die Werte, während die Anzahl der Punkte relativ unverändert bleibt. Größere Fenster liefern glattere Daten zum Preis von mehr hochfrequenten Informationen.

Sie können den Median anstelle des Durchschnitts verwenden, wenn Ihre Daten Ausreißerspitzen aufweisen.

Sie können es auch mit Autokorrelation versuchen.

    
Stefano Borini 25.12.2009 16:37
quelle
1

Eine Möglichkeit, wie Sie Ihre Daten analysieren können, besteht darin, zu versuchen, sie mit einem Modell zu vergleichen, eine Funktion zu generieren und dann Testen Sie die Eignung für Ihren Datensatz .... Dies kann ziemlich kompliziert sein und ist wahrscheinlich unnötig ... aber der Punkt ist, dass anstatt Beschleunigungs / Geschwindigkeitsdaten direkt aus Ihren Daten zu generieren, Sie es an Ihre anpassen können Modell (ziemlich einfach für eine Rakete, etwas Beschleunigung aufwärts, gefolgt von einem langsamen Abstieg mit konstanter Geschwindigkeit). Zumindest so, wie ich es in einem Physikexperiment machen würde.

Um ein gewisses Gefühl von Geschwindigkeit und Beschleunigung während des Fluges zu erzeugen, sollte dies eine einfache Mittelung der Geschwindigkeit aus mehreren verschiedenen Ergebnissen sein. Etwas in der Art von: EsitimatedV = Vmeasured * (1 / n) + (1 - 1 / n) * GeschätzteV. Stellen Sie n basierend darauf ein, wie schnell Sie Ihre Anschlagstärke anpassen möchten.

    
Thomas Sidoti 24.12.2009 06:13
quelle
1

Ich weiß nichts über Raketen. Ich habe deine Punkte geplottet und sie sehen gut aus.

Basierend auf dem, was ich in dieser Handlung sehe, lassen Sie mich annehmen, dass es normalerweise ein einzelnes Apogäum gibt und dass die Funktion, die zu Ihren Punkten führte, in diesem Punkt keine Ableitung nach Zeit hat.

Vorschlag:

  1. Überwachen Sie die maximale Flughöhe während des gesamten Fluges.
  2. Beobachten Sie kontinuierlich das Apogäum, indem Sie die letzten paar Punkte mit dem aktuellen Maximum vergleichen.
  3. Bis Sie das Maximum erreicht haben, berechnen Sie mit (0,0) fixed und einem beliebigen Knotensatz eine Sammlung natürlicher Splines bis zur aktuellen Höhe. Verwenden Sie die Residuen in den Splines, um zu entscheiden, welche Daten verworfen werden sollen. Berechnen Sie die Splines neu.
  4. Am Maximum behalten Sie die zuletzt berechneten Splines. Beginnen Sie mit der Berechnung eines neuen Satzes von Splines für die Kurve hinter dem Apogäum.
Bill Bell 25.12.2009 16:23
quelle
0

ARIMA-Modell und suchen Sie nach Autokorrelation im Rest ist Standardverfahren. Volatilitätsmodell ein anderes.

    
Niklas Rosencrantz 25.12.2009 16:40
quelle