Interface 2015年4月号 第1部 第7章のプログラム

Dependencies:   USBDevice mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers FilterTest.h Source File

FilterTest.h

Go to the documentation of this file.
00001 /**
00002  *  @file       FilterTest.h
00003  *  @brief      Header file for FilterTest.cpp
00004  *  @date       2015.07.30
00005  *  @version    1.0.2.1
00006  */
00007 #ifndef _INC_FilterTest
00008 #define _INC_FilterTest
00009 
00010 #include "mbed.h"
00011 
00012 /* High pass filter fc = 0.5 Hz, fs = 1000 Hz */
00013 #define INIT_HB (0.998431665916719)    /* HPF numerator coefficient */
00014 #define INIT_HA (-0.996863331833438)   /* HPF denominator coefficient */
00015 
00016 /* Low pass filter fc = 30 Hz, fs = 1000 Hz */
00017 #define INIT_LB (0.007820208033497)    /* LPF numerator coefficient */
00018 #define INIT_LA1 (-1.734725768809275)  /* LPF denominator coefficient 1 */
00019 #define INIT_LA2 (0.766006600943264)   /* LPF denominator coefficient 2 */
00020 
00021 /* Notch filter fc = 50 Hz, fs = 1000 Hz */
00022 // #define INIT_NB (0.820675769028781)    /* BRF numerator coefficient */
00023 // #define INIT_NA1 (-1.561018075800720)  /* BRF denominator coefficient 1 */
00024 // #define INIT_NA2 (0.641351538057563)   /* BRF denominator coefficient 2 */
00025 
00026 // /* Notch filter fc = 60 Hz, fs = 1000 Hz */
00027 #define INIT_NB (0.793459754030595)    /* BRF numerator coefficient */
00028 #define INIT_NA1 (-1.475480443592650)  /* BRF denominator coefficient 1 */
00029 #define INIT_NA2 (0.586919508061190)   /* BRF denominator coefficient 2 */
00030 
00031 /**  Filter test
00032  */
00033 class FilterTest
00034 {
00035 
00036 public:
00037     FilterTest();
00038     double calc(double val, int hpf_on, int lpf_on, int brf_on);
00039     bool set_hpf_coef(double hb, double ha);
00040     bool set_lpf_coef(double lb, double la1, double la2);
00041     bool set_brf_coef(double nb, double na1, double na2);
00042 
00043 private:
00044 
00045     /* Coefficient */
00046     double      _hb;                /* High pass filter numerator coefficient */
00047     double      _ha;                /* High pass filter denominator coefficient */
00048     double      _lb;                /* Low pass filter numerator coefficient */
00049     double      _la1;               /* Low pass filter denominator coefficient 1 */
00050     double      _la2;               /* Low pass filter denominator coefficient 2 */
00051     double      _nb;                /* Notch filter numerator coefficient */
00052     double      _na1;               /* Notch filter denominator coefficient 1 */
00053     double      _na2;               /* Notch filter denominator coefficient 2 */
00054 
00055     /* Delay buffer */
00056     double      _hw;                /* High pass filter delay buffer */
00057     double      _lw1;               /* Low pass filter delay buffer 1 */
00058     double      _lw2;               /* Low pass filter delay buffer 2 */
00059     double      _nw1;               /* Notch filter delay buffer 1 */
00060     double      _nw2;               /* Notch filter delay buffer 2 */
00061 
00062     /* Member functions */
00063     void reset_hpf_buf();
00064     void reset_lpf_buf();
00065     void reset_brf_buf();
00066     double hpf(double x);
00067     double lpf(double x);
00068     double brf(double x);
00069 };
00070 #endif    /* INC_FilterTest */