arduino-audio-tools
Loading...
Searching...
No Matches
KalmanFilter.h
1#pragma once
2
3namespace audio_tools {
4
28 public:
36 KalmanFilter(float process_noise = 0.01f, float measurement_noise = 1.0f) {
37 begin(process_noise, measurement_noise);
38 }
39
56 bool begin(float process_noise, float measurement_noise) {
57 Q = process_noise;
58 R = measurement_noise;
59 P = 1.0;
60 X = 0.0;
61 return true;
62 }
63
70 bool begin() {
71 X = 0;
72 return true;
73 }
74
78 void end() { X = 0; }
79
87 void addMeasurement(float measurement) {
88 // Prediction update
89 P = P + Q;
90
91 // Measurement update
92 K = P / (P + R);
93 X = X + K * (measurement - X);
94 P = (1 - K) * P;
95 }
96
102 float calculate() { return X; }
103
104 protected:
108 float Q;
112 float R;
116 float P;
120 float X;
124 float K;
125};
126
127} // namespace audio_tools
Simple 1D Kalman Filter for smoothing measurements.
Definition KalmanFilter.h:27
float calculate()
Returns the current estimated value.
Definition KalmanFilter.h:102
bool begin(float process_noise, float measurement_noise)
reset the filter with new parameters
Definition KalmanFilter.h:56
float Q
Process noise covariance (Q)
Definition KalmanFilter.h:108
float R
Measurement noise covariance (R)
Definition KalmanFilter.h:112
float K
Kalman gain (K)
Definition KalmanFilter.h:124
bool begin()
Reset the filter state to zero, keeping the current noise parameters.
Definition KalmanFilter.h:70
void end()
End or clear the filter (sets the estimate to zero).
Definition KalmanFilter.h:78
KalmanFilter(float process_noise=0.01f, float measurement_noise=1.0f)
Construct a new Kalman Filter object.
Definition KalmanFilter.h:36
float X
Estimated state (X)
Definition KalmanFilter.h:120
float P
Estimation error covariance (P)
Definition KalmanFilter.h:116
void addMeasurement(float measurement)
Updates the filter with a new measurement and returns the filtered value.
Definition KalmanFilter.h:87
Generic Implementation of sound input and output for desktop environments using portaudio.
Definition AudioCodecsBase.h:10