Filters 1.0
LPF, HPF, BPF, BSF, SRL
Loading...
Searching...
No Matches
lpf_2.tpp
Go to the documentation of this file.
2
3template <typename T>
5{
6 reset();
7}
8
9template <typename T>
11{
12 set_param(fc_, dt_);
13}
14
15template <typename T>
17{
18 fc = fc_;
19 dt = dt_;
20 T wc = 6.28318530717958647692528676655900576 * fc;
21 wc = prewarp_freq(wc, dt);
22 T b0 = dt * dt * wc * wc;
23 T b1 = 2.0 * b0;
24 T b2 = b0;
25 T a0 = b0 + 2.0 * 1.414213562373095048801688724209698 * dt * wc + 4.0;
26 T a1 = b1 - 8.0;
27 T a2 = b0 - 2.0 * 1.414213562373095048801688724209698 * dt * wc + 4.0;
28
29 lambda_1 = b0 / a0;
30 lambda_2 = b1 / a0;
31 lambda_3 = b2 / a0;
32 lambda_4 = -a1 / a0;
33 lambda_5 = -a2 / a0;
34}
35
36template <typename T>
38{
39 T y_k = 0.0;
40
41 if (start_counter <= 1)
42 {
43 y_k = x_k;
44 start_counter++;
45 }
46 else
47 {
48 y_k = lambda_1 * x_k + lambda_2 * x_k_1 + lambda_3 * x_k_2 + lambda_4 * y_k_1 + lambda_5 * y_k_2;
49 }
50 y_k_2 = y_k_1;
51 y_k_1 = y_k;
52 x_k_2 = x_k_1;
53 x_k_1 = x_k;
54
55 return y_k;
56}
57
58template <typename T>
60{
61 start_counter = 0;
62 y_k_1 = 0.0;
63 y_k_2 = 0.0;
64 x_k_1 = 0.0;
65 x_k_2 = 0.0;
66}
67
68template <typename T>
70{
71 set_param(fc_, dt);
72}
73
74template <typename T>
76{
77 set_param(fc, dt_);
78}
79
80template <typename T>
82{
83 return fc;
84}
85
86template <typename T>
88{
89 return dt;
90}
91
92template <typename T>
94{
95 return 1.0 / dt;
96}
97
98template <typename T>
100{
101 return (2.0 * std::tan(0.5 * wc_ * dt_)) / dt_;
102}
T prewarp_freq(T wc_, T dt_)
Prewarps an angular cutoff frequency.
Definition lpf_2.h:100
T update(T x_k)
Processes a new input sample.
Definition lpf_2.h:38
void config(T fc_, T dt_)
Configures the low-pass filter.
Definition lpf_2.h:11
T get_dt()
Gets the sampling time.
Definition lpf_2.h:88
void set_fc(T fc_)
Sets the cutoff frequency.
Definition lpf_2.h:70
LPF_2()
Constructs a second-order low-pass filter.
Definition lpf_2.h:5
void set_dt(T dt_)
Sets the sampling time.
Definition lpf_2.h:76
void reset()
Resets the filter state.
Definition lpf_2.h:60
T get_fc()
Gets the cutoff frequency.
Definition lpf_2.h:82
T get_fs()
Gets the sampling frequency.
Definition lpf_2.h:94
void set_param(T fc_, T dt_)
Sets the filter parameters.
Definition lpf_2.h:17
Second-order low-pass filter.