fome-fw/firmware/util/math/biquad.h

27 lines
586 B
C
Raw Normal View History

2016-09-10 13:03:27 -07:00
/*
* @file biquad.h
*
* @date Sep 10, 2016
2020-01-13 18:57:43 -08:00
* @author Andrey Belomutskiy, (c) 2012-2020
2016-09-10 13:03:27 -07:00
*/
2020-04-01 18:32:21 -07:00
#pragma once
2016-09-10 13:03:27 -07:00
class Biquad {
public:
Biquad();
float filter(float input);
void reset();
void cookSteadyState(float steadyStateInput);
void configureBandpass(float samplingFrequency, float centerFrequency, float Q);
// Default Q = 1/sqrt(2) = 0.707 gives a maximally flat passband without any overshoot near the cutoff (ie, Butterworth)
void configureLowpass(float samplingFrequency, float cutoffFrequency, float Q = 0.707f);
2016-09-10 13:03:27 -07:00
private:
float a0, a1, a2, b1, b2;
float z1, z2;
2016-09-10 13:03:27 -07:00
};