Ich verstehe das Grundprinzip eines Partikelfilters und habe versucht, einen zu implementieren. Ich habe mich jedoch auf den Resampling-Teil festgelegt.
Theoretisch ist es ganz einfach: Zeichnen Sie aus der alten (und gewichteten) Menge von Partikeln eine neue Menge von Partikeln mit Ersetzung. Bevorzugen Sie dabei Partikel mit hohem Gewicht. Partikel mit hohen Gewichten werden häufiger und Partikel mit niedrigen Gewichten seltener gezeichnet. Vielleicht nur einmal oder gar nicht. Nach dem Resampling erhalten alle Gewichte das gleiche Gewicht.
Meine erste Idee, wie man das umsetzt, war im Wesentlichen:
- Normalisieren Sie die Gewichte
- Multiplizieren Sie jedes Gewicht mit der Gesamtzahl der Partikel
- Runden Sie diese skalierten Gewichte auf die nächste Ganzzahl (z. B. mit
int()
in Python)
Jetzt sollte ich wissen, wie oft jedes Partikel gezeichnet werden muss , aber aufgrund der Rundungsfehler habe ich weniger Partikel als vor dem Resampling-Schritt.
Die Frage: Wie "fülle" ich die fehlenden Partikel auf, um die gleiche Anzahl an Partikeln wie vor dem Resampling-Schritt zu erhalten? Oder, falls ich hier völlig aus dem Ruder gelaufen bin, wie kann ich richtig resampeln?