Exponential smoothing filter
Implemented is a simple exponential smoothing filter, which has a infinite impulse response. The implementation is equivalent to the IIR-Filter (see IIR filter). The IIR-Filter calculates the smoothing factor with a cutoff frequency and a RC-element. The exponential smoothing filter uses a fixed smoothing factor, the basic implementation is given by the formula[1]:
Example
1#include "uz_signals.h"
2int main(void) {
3 float alpha = 0.3f; //smoothing factor defined by user
4 uz_exp_smooth_t* test_instance = uz_exp_smooth_init(alpha);
5 float unfiltered_signal = 20.0f;
6 float filtered_signal = 10.0f;
7 filtered_signal = uz_exp_smooth_sample(test_instance, unfiltered_signal);
8}
Note
The implementation of the filter uses the first value from the unfiltered signal as the first output (first sample).
Reference
-
typedef struct uz_exp_smooth_t uz_exp_smooth_t
-
uz_exp_smooth_t *uz_exp_smooth_init(float alpha)
Initialization of the simple exponential smoothing filter.
- Parameters
alpha – smoothing factor, 0 ≤ α ≤ 1
- Returns
uz_exp_smooth_t* pointer instance
-
float uz_exp_smooth_sample(uz_exp_smooth_t *self, float input)
Function to filter an input signal with exponential smoothing filter.
- Parameters
self – pointer instance of uz_exp_smooth_t*
input – signal, which will be filtered
- Returns
float filtered signal