Defines a second order section of a biquadChain
biquadFilter.cpp@1:8589bd80071d, 2017-10-20 (annotated)
- Committer:
- tvlogman
- Date:
- Fri Oct 20 16:29:01 2017 +0000
- Revision:
- 1:8589bd80071d
- Parent:
- 0:5484e3da74be
Should now work, doesn't give compile errors but not tested with a real EMG signal;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
tvlogman | 0:5484e3da74be | 1 | #include "biquadFilter.h" |
tvlogman | 0:5484e3da74be | 2 | #include "mbed.h" |
tvlogman | 0:5484e3da74be | 3 | |
tvlogman | 0:5484e3da74be | 4 | // Member function definitions |
tvlogman | 0:5484e3da74be | 5 | biquadFilter::biquadFilter(double B0, double B1, double B2, double A0, double A1, double A2):b0(B0),b1(B1),b2(B2),a0(A0),a1(A1),a2(A2){ |
tvlogman | 0:5484e3da74be | 6 | // Initializing filter coefficients |
tvlogman | 0:5484e3da74be | 7 | v = 0; |
tvlogman | 0:5484e3da74be | 8 | y = 0; |
tvlogman | 0:5484e3da74be | 9 | v1 = 0; |
tvlogman | 0:5484e3da74be | 10 | v2 = 0; |
tvlogman | 0:5484e3da74be | 11 | } |
tvlogman | 0:5484e3da74be | 12 | |
tvlogman | 0:5484e3da74be | 13 | double biquadFilter :: filterInput(double u){ |
tvlogman | 0:5484e3da74be | 14 | v = u - a1*v1 - a2*v2; |
tvlogman | 0:5484e3da74be | 15 | y = b0*v + b1*v1 + b2*v2; |
tvlogman | 0:5484e3da74be | 16 | |
tvlogman | 0:5484e3da74be | 17 | // Prepare for next sample |
tvlogman | 0:5484e3da74be | 18 | v2 = v1; |
tvlogman | 0:5484e3da74be | 19 | v1 = v; |
tvlogman | 0:5484e3da74be | 20 | |
tvlogman | 0:5484e3da74be | 21 | return y; |
tvlogman | 0:5484e3da74be | 22 | } |