Filtre médian

Un graphique avec deux pics avec l’entrée suivant de près le signal cible.

A statistically robust alternative to the moving-average filter is the median filter. Where a moving average filter takes the arithmetic mean of the input over a moving sample window, a median filter (per the name) takes a median instead.

Le filtre médian est très utile pour supprimer les valeurs aberrantes quelquefois occasionnelles d’un flux d’entrée. Cela le rend particulièrement bien adapté au filtrage des entrées des capteurs de distance, qui sont sujets à des interférences de temps à autre. Contrairement à une moyenne mobile, le filtre médian ne sera pas affecté par un petit nombre de valeurs aberrantes, aussi extrêmes soient-elles.

The median filter is supported in WPILib through the MedianFilter class (Java, C++, , Python).

La création de MedianFilter

Note

La classe C++ MedianFilter est basée sur le type de données utilisé comme entrée.

Note

Étant donné que les filtres ont une «mémoire», chaque flux d’entrée nécessite son propre objet filtre. N’essayez pas d’utiliser le même objet filtre pour plusieurs flux d’entrée.

La création de MedianFilter est simple:

// Creates a MedianFilter with a window size of 5 samples
MedianFilter filter = new MedianFilter(5);
// Creates a MedianFilter with a window size of 5 samples
frc::MedianFilter<double> filter(5);
from wpimath.filter import MedianFilter

# Creates a MedianFilter with a window size of 5 samples
filter = MedianFilter(5)

L’utilisation de MedianFilter

Une fois votre filtre créé, son utilisation est simple - il suffit d’appeler la méthode calculate() avec l’entrée la plus récente pour obtenir la sortie filtrée:

// Calculates the next value of the output
filter.calculate(input);
// Calculates the next value of the output
filter.Calculate(input);
# Calculates the next value of the output
filter.calculate(input)