Ich brauche eine Erklärung des Fortgeschrittenen Kalman-Filteralgorithmus. Bevorzugt ein C-Code, aber nur der Algorithmus wird für mich funktionieren.
Antwort
Zu viele Anzeigen?Kalman-Filter sind spezialisierte Versionen von Wiener-Filtern. Speziell nehmen Kalman-Filter Informationen über ein Problemfeld und verbessern einen Wiener-Filter, indem sie dieses domänenspezifische Wissen anwenden. Ich habe die Wikipedia-Seite als ausgezeichnete Referenzquelle für das Verständnis der Einzelheiten des Algorithmus gefunden.
Ohne die spezifischen Details hier zu wiederholen (keine Vorstellung von linearen Algebrafunktionen), schätzen Kalman-Filter zukünftige Zustände inkrementell (wie auch Wiener-Filter, übrigens). Insbesondere schätzen wir den Zustand, wenden Problemfeld-spezifische Rauschschätzungen und Zustandsänderungsapproximationen an, und dann iterieren wir. Das heißt, wir nehmen aktuelle Beobachtungen des Zustands, filtern diese Beobachtungen, sagen den nächsten Zustand voraus, kombinieren dann dieses Ergebnis, um eine neue nächste Zustandsbeobachtung zu erzeugen.
Ich habe Kalman-Filter als ziemlich nützlich für die Vorhersage von Bewegungspfaden gefunden. Da Bewegungspfade sanft sind, funktionieren Kalman-Filter besonders gut - Bewegung kann leicht unter Verwendung vergangener bekannter Beobachtungen des Zustands vorhergesagt werden. Angenommen, Sie sind mit einem Auto auf der Straße unterwegs, Sie würden die aktuellen Koordinaten des Autos als den aktuellen Zustand aufzeichnen. Sie filtern dann vergangene Beobachtungen des Zustands (Ihre vorherigen Positionen), um den nächsten Punkt vorherzusagen, an dem sich das Auto befinden wird (in der Zeit). Beachten Sie, dass Sie Gesetze der Physik (sagen wir, Impuls) anwenden können, um diesen Filter anzupassen und ziemlich vernünftige Ergebnisse zu erzielen. Zufällige Änderungen in Geschwindigkeit oder Richtung haben Auswirkungen auf die Vorhersagen.
Schauen Sie sich diese C-Implementierung an, dort sehen Sie, dass wir zwei Hauptfunktionen beim Ausführen eines Kalman-Filters haben schätzen
und aktualisieren
(der Wikipedia-Artikel spricht darüber, nennt aber schätzen
"vorhersagen
").
Letztendlich müssen Sie sehr spezifische Statistiken für das Problem bestimmen, für das Sie einen Kalman-Filter anwenden möchten. Insbesondere müssen Sie Statistiken generieren/aufzeichnen/beobachten, wie sich die Varianz des Rauschsignals, das Sie beobachten, im Laufe der Zeit entwickelt. Es wird angenommen, dass der Prozess, den Sie vorhersagen, auch stochastisch ist, und daher müssen Sie auch seine Statistiken schätzen.