daiki hiraoka
/
EMG
筋電センサプログラム
筋電
FilterTest.h@13:94ce8bd0c0e1, 2018-01-04 (annotated)
- Committer:
- dhpt
- Date:
- Thu Jan 04 06:30:00 2018 +0000
- Revision:
- 13:94ce8bd0c0e1
- Parent:
- 3:5d91bfe4a79d
???????????????; ????read?3.3????
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
dhpt | 3:5d91bfe4a79d | 1 | /** |
dhpt | 3:5d91bfe4a79d | 2 | * @file FilterTest.h |
dhpt | 3:5d91bfe4a79d | 3 | * @brief Header file for FilterTest.cpp |
dhpt | 3:5d91bfe4a79d | 4 | * @date 2015.07.30 |
dhpt | 3:5d91bfe4a79d | 5 | * @version 1.0.2.1 |
dhpt | 3:5d91bfe4a79d | 6 | */ |
dhpt | 3:5d91bfe4a79d | 7 | #ifndef _INC_FilterTest |
dhpt | 3:5d91bfe4a79d | 8 | #define _INC_FilterTest |
dhpt | 3:5d91bfe4a79d | 9 | |
dhpt | 3:5d91bfe4a79d | 10 | #include "mbed.h" |
dhpt | 3:5d91bfe4a79d | 11 | |
dhpt | 3:5d91bfe4a79d | 12 | /* High pass filter fc = 0.5 Hz, fs = 1000 Hz */ |
dhpt | 3:5d91bfe4a79d | 13 | #define INIT_HB (0.998431665916719) /* HPF numerator coefficient */ |
dhpt | 3:5d91bfe4a79d | 14 | #define INIT_HA (-0.996863331833438) /* HPF denominator coefficient */ |
dhpt | 3:5d91bfe4a79d | 15 | |
dhpt | 3:5d91bfe4a79d | 16 | /* Low pass filter fc = 30 Hz, fs = 1000 Hz */ |
dhpt | 3:5d91bfe4a79d | 17 | #define INIT_LB (0.007820208033497) /* LPF numerator coefficient */ |
dhpt | 3:5d91bfe4a79d | 18 | #define INIT_LA1 (-1.734725768809275) /* LPF denominator coefficient 1 */ |
dhpt | 3:5d91bfe4a79d | 19 | #define INIT_LA2 (0.766006600943264) /* LPF denominator coefficient 2 */ |
dhpt | 3:5d91bfe4a79d | 20 | |
dhpt | 3:5d91bfe4a79d | 21 | /* Notch filter fc = 50 Hz, fs = 1000 Hz */ |
dhpt | 3:5d91bfe4a79d | 22 | // #define INIT_NB (0.820675769028781) /* BRF numerator coefficient */ |
dhpt | 3:5d91bfe4a79d | 23 | // #define INIT_NA1 (-1.561018075800720) /* BRF denominator coefficient 1 */ |
dhpt | 3:5d91bfe4a79d | 24 | // #define INIT_NA2 (0.641351538057563) /* BRF denominator coefficient 2 */ |
dhpt | 3:5d91bfe4a79d | 25 | |
dhpt | 3:5d91bfe4a79d | 26 | // /* Notch filter fc = 60 Hz, fs = 1000 Hz */ |
dhpt | 3:5d91bfe4a79d | 27 | #define INIT_NB (0.793459754030595) /* BRF numerator coefficient */ |
dhpt | 3:5d91bfe4a79d | 28 | #define INIT_NA1 (-1.475480443592650) /* BRF denominator coefficient 1 */ |
dhpt | 3:5d91bfe4a79d | 29 | #define INIT_NA2 (0.586919508061190) /* BRF denominator coefficient 2 */ |
dhpt | 3:5d91bfe4a79d | 30 | |
dhpt | 3:5d91bfe4a79d | 31 | /** Filter test |
dhpt | 3:5d91bfe4a79d | 32 | */ |
dhpt | 3:5d91bfe4a79d | 33 | class FilterTest |
dhpt | 3:5d91bfe4a79d | 34 | { |
dhpt | 3:5d91bfe4a79d | 35 | |
dhpt | 3:5d91bfe4a79d | 36 | public: |
dhpt | 3:5d91bfe4a79d | 37 | FilterTest(); |
dhpt | 3:5d91bfe4a79d | 38 | double calc(double val, int hpf_on, int lpf_on, int brf_on); |
dhpt | 3:5d91bfe4a79d | 39 | bool set_hpf_coef(double hb, double ha); |
dhpt | 3:5d91bfe4a79d | 40 | bool set_lpf_coef(double lb, double la1, double la2); |
dhpt | 3:5d91bfe4a79d | 41 | bool set_brf_coef(double nb, double na1, double na2); |
dhpt | 3:5d91bfe4a79d | 42 | |
dhpt | 3:5d91bfe4a79d | 43 | private: |
dhpt | 3:5d91bfe4a79d | 44 | |
dhpt | 3:5d91bfe4a79d | 45 | /* Coefficient */ |
dhpt | 3:5d91bfe4a79d | 46 | double _hb; /* High pass filter numerator coefficient */ |
dhpt | 3:5d91bfe4a79d | 47 | double _ha; /* High pass filter denominator coefficient */ |
dhpt | 3:5d91bfe4a79d | 48 | double _lb; /* Low pass filter numerator coefficient */ |
dhpt | 3:5d91bfe4a79d | 49 | double _la1; /* Low pass filter denominator coefficient 1 */ |
dhpt | 3:5d91bfe4a79d | 50 | double _la2; /* Low pass filter denominator coefficient 2 */ |
dhpt | 3:5d91bfe4a79d | 51 | double _nb; /* Notch filter numerator coefficient */ |
dhpt | 3:5d91bfe4a79d | 52 | double _na1; /* Notch filter denominator coefficient 1 */ |
dhpt | 3:5d91bfe4a79d | 53 | double _na2; /* Notch filter denominator coefficient 2 */ |
dhpt | 3:5d91bfe4a79d | 54 | |
dhpt | 3:5d91bfe4a79d | 55 | /* Delay buffer */ |
dhpt | 3:5d91bfe4a79d | 56 | double _hw; /* High pass filter delay buffer */ |
dhpt | 3:5d91bfe4a79d | 57 | double _lw1; /* Low pass filter delay buffer 1 */ |
dhpt | 3:5d91bfe4a79d | 58 | double _lw2; /* Low pass filter delay buffer 2 */ |
dhpt | 3:5d91bfe4a79d | 59 | double _nw1; /* Notch filter delay buffer 1 */ |
dhpt | 3:5d91bfe4a79d | 60 | double _nw2; /* Notch filter delay buffer 2 */ |
dhpt | 3:5d91bfe4a79d | 61 | |
dhpt | 3:5d91bfe4a79d | 62 | /* Member functions */ |
dhpt | 3:5d91bfe4a79d | 63 | void reset_hpf_buf(); |
dhpt | 3:5d91bfe4a79d | 64 | void reset_lpf_buf(); |
dhpt | 3:5d91bfe4a79d | 65 | void reset_brf_buf(); |
dhpt | 3:5d91bfe4a79d | 66 | double hpf(double x); |
dhpt | 3:5d91bfe4a79d | 67 | double lpf(double x); |
dhpt | 3:5d91bfe4a79d | 68 | double brf(double x); |
dhpt | 3:5d91bfe4a79d | 69 | }; |
dhpt | 3:5d91bfe4a79d | 70 | #endif /* INC_FilterTest */ |