Séquence 5 : Robot Maxpid

Expérimenter et Résoudre pour déterminer les performances énergétiques de la chaîne de puissance d’un système

Filtrage numérique

Dans la chaîne de traitement du signal, des observations brutes au résultat final, une étape souvent essentielle consiste à s’affranchir de signaux parasites. C’est possible lorsque ces derniers présentent des caractéristiques différentes de celles du signal.

Moyenne mobile

Un filtre par moyenne glissante substitue à une valeur donnée la moyenne des valeurs aux alentours, dans un intervalle de largeur \( 2 \cdot n + 1 \). Plus l’intervalle est grand, plus le filtrage est efficace.

Ce filtrage présente des inconvénients que dévoile la transformée de Fourier : le filtrage des fréquences par moyenne glissante est très irrégulier.


from numpy import mean

def moyenneMobile (l, n):
  # Taille de la liste
  taille = len (l)
  # Créer une liste aussi grande que les données
  resultat = [ None ]* taille
  for i in range ( taille ):
    # chercher les bornes de la sous liste dont on doit faire la moyenne
    a, b = i - n, i + n + 1
    # les bornes doivent compatible avec la liste
    a, b = max (0, a), min(b, taille )
    # Faire la moyenne
    resultat [i] = mean (l[a:b])
  return resultat

Médiane mobile

Un filtre par médiane mobile substitue à une valeur donnée la médiane des valeurs aux alentours, dans un intervalle de largeur \( 2 \cdot n + 1 \). Ce filtrage est efficace pour gommer les valeurs aberrantes.


from numpy import median

def medianeMobile (l, n):
  # Taille de la liste
  taille = len (l)
  # Créer une liste aussi grande que les données
  resultat = [ None ]* taille
  for i in range ( taille ):
    # chercher les bornes de la sous liste dont on doit prendre la mé diane
    a, b = i - n, i + n + 1
    # les bornes doivent compatible avec la liste
    a, b = max (0, a), min(b, taille )
    # Prendre la mé diane
    resultat [i] = median (l[a:b])
  return resultat