Moyenne glissante⚓︎
Un accéléromètre permet de déterminer les mouvements d'un objet.
Cependant, il est souvent difficile d'interpréter les informations brutes issues de ce capteur, car elles sont fortement bruitées, c'est-à-dire sensible aux parasites extérieurs.
Il convient alors d'appliquer un filtre à ce signal afin de le lisser et supprimer les variations rapides, comme représenté ci-dessous :
Un filtre simple à mettre en place est la moyenne glissante. Une valeur filtrée est obtenue en faisant la moyenne des 5 dernières mesures.
On peut ainsi considérer une fenêtre de 4 mesures
qui va "glisser" à chaque nouvelle mesure.
Par exemple, si on a les 4 dernières valent 5, 7, 7 et 9 et que la nouvelle mesure vaut 10
alors la valeur filtrée vaudra 7.6 (moyenne des 5 valeurs) et la nouvelle fenêtre sera :
Compléter la fonction filtre()
qui prend en paramètres un tableau valeurs
de 4 nombres entiers ou flottant ainsi qu'un nombre nouvelle_mesure
, et qui renvoie le tableau modifié ainsi que la valeur filtrée.
def filtre(valeurs, nouvellepy-undmesure):bksl-nlbksl-nl #Calcul de la valeur filtrée par moyenne glissantebksl-nl valeurpy-undfiltrée = (...bksl-nl + nouveaupy-undechantillon)/...bksl-nlbksl-nl #Modification de la fenêtrebksl-nl valeurs[0], valeurs[1], valeurs[2] = ...bksl-nl valeurs[3] = ...bksl-nlbksl-nl return ...bksl-nlbksl-nl# testsbksl-nlfenetre = [5, 7, 7, 9]bksl-nlfenetre, valeur = filtre(fenetre, 10)bksl-nlfenetre, valeur = filtre(fenetre, 12)bksl-nlbksl-nldef filtre(valeurs, nouvellepy-undmesure):bksl-nlbksl-nl # Calcul de la valeur filtrée par moyenne glissantebksl-nl valeurpy-undfiltrée = (valeurs[0] + valeurs[1] + valeurs[2] + valeurs[3]bksl-nl + nouvellepy-undmesure)/5bksl-nlbksl-nl # Modification de la fenêtrebksl-nl valeurs[0], valeurs[1], valeurs[2] = valeurs[1], valeurs[2], valeurs[3]bksl-nl valeurs[3] = nouvellepy-undmesurebksl-nlbksl-nl return valeurs, valeurpy-undfiltréebksl-nlbksl-nl
A
{{ IDE('exo_corr') }}
Z