Aller au contenu

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.

signal parasité

Il convient alors d'appliquer un filtre à ce signal afin de le lisser et supprimer les variations rapides, comme représenté ci-dessous : signal lissé

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

signal lissé

qui va "glisser" à chaque nouvelle mesure.

signal lissé

Par exemple, si on a les 4 dernières valent 5, 7, 7 et 9 et que la nouvelle mesure vaut 10

signal lissé

alors la valeur filtrée vaudra 7.6 (moyenne des 5 valeurs) et la nouvelle fenêtre sera :

signal lissé

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.

fenetre = [5, 7, 7, 9]bksl-nlfenetre, valeur = filtre(fenetre, 10)bksl-nlassert fenetre == [7, 7, 9, 10]bksl-nlassert round(valeur, 1) == 7.6bksl-nlfenetre, valeur = filtre(fenetre, 12)bksl-nlassert fenetre == [7, 9, 10, 12]bksl-nlassert round(valeur, 1) == 9bksl-nlfenetre, valeur = filtre(fenetre, 12)bksl-nlassert fenetre == [9, 10, 12, 12]bksl-nlassert round(valeur, 1) == 8bksl-nlfenetre, valeur = filtre(fenetre, 15)bksl-nlassert fenetre == [10, 12, 12, 15]bksl-nlassert round(valeur, 1) == 11.6bksl-nlbksl-nl ∞/∞

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

Retour en haut de la page