filter functions within a filter class, plus corresponding h file to be included in main programme
Dependencies: mbed
read_filter_emg.h@2:2fce57d3d64a, 2015-10-16 (annotated)
- Committer:
- NickDGreg
- Date:
- Fri Oct 16 09:37:58 2015 +0000
- Revision:
- 2:2fce57d3d64a
- Parent:
- read_emg_sensors.h@0:fe10b6dc2ba1
changed names of files to match include statements
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
NickDGreg | 0:fe10b6dc2ba1 | 1 | /* |
NickDGreg | 0:fe10b6dc2ba1 | 2 | * read_filter_emg.h |
NickDGreg | 0:fe10b6dc2ba1 | 3 | * |
NickDGreg | 0:fe10b6dc2ba1 | 4 | * Created on: Oct 14, 2015 |
NickDGreg | 0:fe10b6dc2ba1 | 5 | * Author: User |
NickDGreg | 0:fe10b6dc2ba1 | 6 | */ |
NickDGreg | 0:fe10b6dc2ba1 | 7 | |
NickDGreg | 0:fe10b6dc2ba1 | 8 | #ifndef READ_FILTER_EMG_H_ |
NickDGreg | 0:fe10b6dc2ba1 | 9 | #define READ_FILTER_EMG_H_ |
NickDGreg | 0:fe10b6dc2ba1 | 10 | |
NickDGreg | 0:fe10b6dc2ba1 | 11 | class EMG { |
NickDGreg | 0:fe10b6dc2ba1 | 12 | public: |
NickDGreg | 0:fe10b6dc2ba1 | 13 | //create instance of the EMG class |
NickDGreg | 2:2fce57d3d64a | 14 | EMG(AnalogIn aI_, double &v1_, double &v2_); |
NickDGreg | 0:fe10b6dc2ba1 | 15 | double v1; |
NickDGreg | 0:fe10b6dc2ba1 | 16 | double v2; |
NickDGreg | 0:fe10b6dc2ba1 | 17 | double input_sample; |
NickDGreg | 0:fe10b6dc2ba1 | 18 | double filtered_sample; |
NickDGreg | 0:fe10b6dc2ba1 | 19 | |
NickDGreg | 0:fe10b6dc2ba1 | 20 | //reads emg value and saves as input_sample |
NickDGreg | 0:fe10b6dc2ba1 | 21 | void sample(); |
NickDGreg | 0:fe10b6dc2ba1 | 22 | |
NickDGreg | 0:fe10b6dc2ba1 | 23 | /*general biquad function to be used in the filtering |
NickDGreg | 0:fe10b6dc2ba1 | 24 | biquad coefficients are in the filter functions */ |
NickDGreg | 0:fe10b6dc2ba1 | 25 | double biquad(double u, double &v1, double &v2, const double a1, |
NickDGreg | 0:fe10b6dc2ba1 | 26 | const double a2, const double b0, const double b1, const double b2); |
NickDGreg | 0:fe10b6dc2ba1 | 27 | |
NickDGreg | 0:fe10b6dc2ba1 | 28 | //20 hz highpass filter contains 3 biquads. Returns filtered value |
NickDGreg | 0:fe10b6dc2ba1 | 29 | double highpass_filter(double hpInput); |
NickDGreg | 0:fe10b6dc2ba1 | 30 | |
NickDGreg | 0:fe10b6dc2ba1 | 31 | //Rectify the input (take absolute value). Input is output of highpass |
NickDGreg | 0:fe10b6dc2ba1 | 32 | double rectify(double rcInput); |
NickDGreg | 0:fe10b6dc2ba1 | 33 | |
NickDGreg | 0:fe10b6dc2ba1 | 34 | //6 hz low pass filter, contains 3 biquads, input output of rectify |
NickDGreg | 0:fe10b6dc2ba1 | 35 | double lowpass_filter(double lpInput); |
NickDGreg | 0:fe10b6dc2ba1 | 36 | |
NickDGreg | 0:fe10b6dc2ba1 | 37 | //function containing all three filter steps. Input raw signal value, output is filtered envelope value |
NickDGreg | 0:fe10b6dc2ba1 | 38 | double filter(double input); |
NickDGreg | 0:fe10b6dc2ba1 | 39 | }; |
NickDGreg | 0:fe10b6dc2ba1 | 40 | |
NickDGreg | 0:fe10b6dc2ba1 | 41 | #endif /* READ_FILTER_EMG_H_ */ |