add 60Hz/50Hz notch filter

Dependencies:   mbed

Committer:
nagasm
Date:
Sat Dec 20 02:08:03 2014 +0000
Revision:
2:048d8bddb100
Parent:
0:5ec74240d7f1
revised

Who changed what in which revision?

UserRevisionLine numberNew 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 }