Je comprends le principe de base d'un filtre à particules et j'ai essayé de l'implémenter. Cependant, je me suis accroché à la partie de rééchantillonnage.
Théoriquement parlant, c'est assez simple: à partir de l'ancien ensemble de particules (et pondéré), dessinez un nouvel ensemble de particules avec remplacement. Ce faisant, privilégiez les particules de poids élevé. Les particules de poids élevé sont attirées plus souvent et les particules de faible poids moins souvent. Peut-être une seule fois ou pas du tout. Après le rééchantillonnage, tous les poids reçoivent le même poids.
Ma première idée sur la façon de mettre en œuvre cela était essentiellement la suivante:
- Normaliser les poids
- Multipliez chaque poids par le nombre total de particules
- Arrondissez ces pondérations à l'entier le plus proche (par exemple avec
int()
en Python)
Maintenant, je devrais savoir à quelle fréquence dessiner chaque particule, mais en raison des erreurs d'arrondi, je finis par avoir moins de particules qu'avant l'étape de rééchantillonnage.
La question: comment «remplir» les particules manquantes afin d'obtenir le même nombre de particules qu'avant l'étape de rééchantillonnage? Ou, au cas où je ne serais pas complètement sur la bonne voie ici, comment puis-je rééchantillonner correctement?