Yoichi Nagashima
/
CQ_nagasm_08_notch_test
add 60Hz/50Hz notch filter
FIR_LPF.hpp@2:048d8bddb100, 2014-12-20 (annotated)
- Committer:
- nagasm
- Date:
- Sat Dec 20 02:08:03 2014 +0000
- Revision:
- 2:048d8bddb100
- Parent:
- 0:5ec74240d7f1
revised
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
nagasm | 0:5ec74240d7f1 | 1 | // from CQpub0 Mikami / FIR_LPF_Direct |
nagasm | 0:5ec74240d7f1 | 2 | // http://developer.mbed.org/users/CQpub0Mikami/code/FIR_LPF_Direct |
nagasm | 0:5ec74240d7f1 | 3 | // |
nagasm | 0:5ec74240d7f1 | 4 | // Band1 Band2 |
nagasm | 0:5ec74240d7f1 | 5 | // Lower band edge frequency (kHz) 0.000000 0.600000 |
nagasm | 0:5ec74240d7f1 | 6 | // Upper band edge frequency (kHz) 0.500000 5.000000 |
nagasm | 0:5ec74240d7f1 | 7 | // Gain 1.000000 0.000000 |
nagasm | 0:5ec74240d7f1 | 8 | // Weight 1.000000 1.000000 |
nagasm | 0:5ec74240d7f1 | 9 | // Deviation 0.009734 0.009734 |
nagasm | 0:5ec74240d7f1 | 10 | // Deviation [dB] 0.084139 -40.234188 |
nagasm | 0:5ec74240d7f1 | 11 | |
nagasm | 0:5ec74240d7f1 | 12 | const float fc[order+1] = { |
nagasm | 0:5ec74240d7f1 | 13 | -3.566292E-03f, 2.335185E-03f, 1.917338E-03f, 1.681921E-03f, 1.522689E-03f, |
nagasm | 0:5ec74240d7f1 | 14 | 1.364066E-03f, 1.157961E-03f, 8.803014E-04f, 5.296940E-04f, 1.236180E-04f, |
nagasm | 0:5ec74240d7f1 | 15 | -3.047488E-04f, -7.123405E-04f, -1.051992E-03f, -1.279654E-03f, -1.360180E-03f, |
nagasm | 0:5ec74240d7f1 | 16 | -1.273725E-03f, -1.018960E-03f, -6.155554E-04f, -1.029986E-04f, 4.621914E-04f, |
nagasm | 0:5ec74240d7f1 | 17 | 1.013316E-03f, 1.480161E-03f, 1.798055E-03f, 1.916527E-03f, 1.805744E-03f, |
nagasm | 0:5ec74240d7f1 | 18 | 1.463100E-03f, 9.143371E-04f, 2.130115E-04f, -5.640853E-04f, -1.326518E-03f, |
nagasm | 0:5ec74240d7f1 | 19 | -1.978121E-03f, -2.430574E-03f, -2.613837E-03f, -2.486610E-03f, -2.043447E-03f, |
nagasm | 0:5ec74240d7f1 | 20 | -1.317959E-03f, -3.802110E-04f, 6.680631E-04f, 1.704594E-03f, 2.600376E-03f, |
nagasm | 0:5ec74240d7f1 | 21 | 3.235972E-03f, 3.515095E-03f, 3.379365E-03f, 2.817894E-03f, 1.872141E-03f, |
nagasm | 0:5ec74240d7f1 | 22 | 6.322899E-04f, -7.684087E-04f, -2.167773E-03f, -3.393601E-03f, -4.284042E-03f, |
nagasm | 0:5ec74240d7f1 | 23 | -4.705797E-03f, -4.577073E-03f, -3.875274E-03f, -2.648668E-03f, -1.012065E-03f, |
nagasm | 0:5ec74240d7f1 | 24 | 8.616354E-04f, 2.758435E-03f, 4.447251E-03f, 5.706155E-03f, 6.350451E-03f, |
nagasm | 0:5ec74240d7f1 | 25 | 6.257734E-03f, 5.386359E-03f, 3.786968E-03f, 1.602121E-03f, -9.435526E-04f, |
nagasm | 0:5ec74240d7f1 | 26 | -3.565645E-03f, -5.948320E-03f, -7.781761E-03f, -8.797770E-03f, -8.807067E-03f, |
nagasm | 0:5ec74240d7f1 | 27 | -7.725336E-03f, -5.594939E-03f, -2.585050E-03f, 1.010693E-03f, 4.809328E-03f, |
nagasm | 0:5ec74240d7f1 | 28 | 8.361672E-03f, 1.121444E-02f, 1.295107E-02f, 1.324389E-02f, 1.191081E-02f, |
nagasm | 0:5ec74240d7f1 | 29 | 8.934171E-03f, 4.488148E-03f, -1.062401E-03f, -7.182842E-03f, -1.321242E-02f, |
nagasm | 0:5ec74240d7f1 | 30 | -1.841506E-02f, -2.204769E-02f, -2.343209E-02f, -2.202840E-02f, -1.749386E-02f, |
nagasm | 0:5ec74240d7f1 | 31 | -9.730157E-03f, 1.092382E-03f, 1.453105E-02f, 2.989524E-02f, 4.629194E-02f, |
nagasm | 0:5ec74240d7f1 | 32 | 6.269474E-02f, 7.802411E-02f, 9.123583E-02f, 1.014078E-01f, 1.078185E-01f, |
nagasm | 0:5ec74240d7f1 | 33 | 1.100078E-01f, 1.078185E-01f, 1.014078E-01f, 9.123583E-02f, 7.802411E-02f, |
nagasm | 0:5ec74240d7f1 | 34 | 6.269474E-02f, 4.629194E-02f, 2.989524E-02f, 1.453105E-02f, 1.092382E-03f, |
nagasm | 0:5ec74240d7f1 | 35 | -9.730157E-03f, -1.749386E-02f, -2.202840E-02f, -2.343209E-02f, -2.204769E-02f, |
nagasm | 0:5ec74240d7f1 | 36 | -1.841506E-02f, -1.321242E-02f, -7.182842E-03f, -1.062401E-03f, 4.488148E-03f, |
nagasm | 0:5ec74240d7f1 | 37 | 8.934171E-03f, 1.191081E-02f, 1.324389E-02f, 1.295107E-02f, 1.121444E-02f, |
nagasm | 0:5ec74240d7f1 | 38 | 8.361672E-03f, 4.809328E-03f, 1.010693E-03f, -2.585050E-03f, -5.594939E-03f, |
nagasm | 0:5ec74240d7f1 | 39 | -7.725336E-03f, -8.807067E-03f, -8.797770E-03f, -7.781761E-03f, -5.948320E-03f, |
nagasm | 0:5ec74240d7f1 | 40 | -3.565645E-03f, -9.435526E-04f, 1.602121E-03f, 3.786968E-03f, 5.386359E-03f, |
nagasm | 0:5ec74240d7f1 | 41 | 6.257734E-03f, 6.350451E-03f, 5.706155E-03f, 4.447251E-03f, 2.758435E-03f, |
nagasm | 0:5ec74240d7f1 | 42 | 8.616354E-04f, -1.012065E-03f, -2.648668E-03f, -3.875274E-03f, -4.577073E-03f, |
nagasm | 0:5ec74240d7f1 | 43 | -4.705797E-03f, -4.284042E-03f, -3.393601E-03f, -2.167773E-03f, -7.684087E-04f, |
nagasm | 0:5ec74240d7f1 | 44 | 6.322899E-04f, 1.872141E-03f, 2.817894E-03f, 3.379365E-03f, 3.515095E-03f, |
nagasm | 0:5ec74240d7f1 | 45 | 3.235972E-03f, 2.600376E-03f, 1.704594E-03f, 6.680631E-04f, -3.802110E-04f, |
nagasm | 0:5ec74240d7f1 | 46 | -1.317959E-03f, -2.043447E-03f, -2.486610E-03f, -2.613837E-03f, -2.430574E-03f, |
nagasm | 0:5ec74240d7f1 | 47 | -1.978121E-03f, -1.326518E-03f, -5.640853E-04f, 2.130115E-04f, 9.143371E-04f, |
nagasm | 0:5ec74240d7f1 | 48 | 1.463100E-03f, 1.805744E-03f, 1.916527E-03f, 1.798055E-03f, 1.480161E-03f, |
nagasm | 0:5ec74240d7f1 | 49 | 1.013316E-03f, 4.621914E-04f, -1.029986E-04f, -6.155554E-04f, -1.018960E-03f, |
nagasm | 0:5ec74240d7f1 | 50 | -1.273725E-03f, -1.360180E-03f, -1.279654E-03f, -1.051992E-03f, -7.123405E-04f, |
nagasm | 0:5ec74240d7f1 | 51 | -3.047488E-04f, 1.236180E-04f, 5.296940E-04f, 8.803014E-04f, 1.157961E-03f, |
nagasm | 0:5ec74240d7f1 | 52 | 1.364066E-03f, 1.522689E-03f, 1.681921E-03f, 1.917338E-03f, 2.335185E-03f, |
nagasm | 0:5ec74240d7f1 | 53 | -3.566292E-03f |
nagasm | 0:5ec74240d7f1 | 54 | }; |
nagasm | 0:5ec74240d7f1 | 55 | |
nagasm | 0:5ec74240d7f1 | 56 | float FIR_calc1(float data){ |
nagasm | 0:5ec74240d7f1 | 57 | int i; |
nagasm | 0:5ec74240d7f1 | 58 | float acc = 0; |
nagasm | 0:5ec74240d7f1 | 59 | xn1[0] = data; |
nagasm | 0:5ec74240d7f1 | 60 | for (i=0; i<=order; i++) acc = acc + fc[i]*xn1[i]; |
nagasm | 0:5ec74240d7f1 | 61 | for (i=order; i>0; i--) xn1[i] = xn1[i-1]; |
nagasm | 0:5ec74240d7f1 | 62 | return(acc); |
nagasm | 0:5ec74240d7f1 | 63 | } |
nagasm | 0:5ec74240d7f1 | 64 | |
nagasm | 0:5ec74240d7f1 | 65 | float FIR_calc2(float data){ |
nagasm | 0:5ec74240d7f1 | 66 | int i; |
nagasm | 0:5ec74240d7f1 | 67 | float acc = 0; |
nagasm | 0:5ec74240d7f1 | 68 | xn2[0] = data; |
nagasm | 0:5ec74240d7f1 | 69 | for (i=0; i<=order; i++) acc = acc + fc[i]*xn2[i]; |
nagasm | 0:5ec74240d7f1 | 70 | for (i=order; i>0; i--) xn2[i] = xn2[i-1]; |
nagasm | 0:5ec74240d7f1 | 71 | return(acc); |
nagasm | 0:5ec74240d7f1 | 72 | } |