The implementation of a Moving Average Filter.
This discrete time filter outputs the average of the last n samples i.e. y[k] = 1/n ∑ⱼ x[k-j] ∀ j = 0..n-1, when n<k and, = 1/k ∑ⱼ x[j] ∀ j = 0..k otherwise; where n is the window size and x being the discrete-time signal that is to be filtered, y is the filtered signal and k is the index of latest element in the signal time-series.
Note that this class is meant to serve as a standalone simple utility and a filter of this form in a more `drake::systems` flavour can be generated from a `systems::AffineSystem` since this is a LTI filter.
T | The element type. Instantiated templates for the following kinds of T's are provided: |
#include <drake/manipulation/util/moving_average_filter.h>
Public Member Functions | |
MovingAverageFilter (int window_size) | |
Constructs the filter with the specified window_size . More... | |
T | Update (const T &new_data) |
Updates the average filter result. More... | |
const std::queue< T > & | window () const |
const T | moving_average () const |
Returns the most recent result of the averaging filter. More... | |
Implements CopyConstructible, CopyAssignable, MoveConstructible, MoveAssignable | |
MovingAverageFilter (const MovingAverageFilter &)=default | |
MovingAverageFilter & | operator= (const MovingAverageFilter &)=default |
MovingAverageFilter (MovingAverageFilter &&)=default | |
MovingAverageFilter & | operator= (MovingAverageFilter &&)=default |
|
default |
|
default |
|
explicit |
Constructs the filter with the specified window_size
.
window_size | The size of the window. |
std::exception | when window_size <= 0. |
const T moving_average | ( | ) | const |
Returns the most recent result of the averaging filter.
|
default |
|
default |
T Update | ( | const T & | new_data | ) |
Updates the average filter result.
Every call to this method modifies the internal state of this filter thus resulting in a computation of the moving average of the data present within the filter window.
new_data |
const std::queue<T>& window | ( | ) | const |