NucleoF401RE EMG sensor with Artifact Filter, Notch Filter, etc

Dependencies:   mbed

Committer:
nagasm
Date:
Sat Dec 20 02:09:12 2014 +0000
Revision:
1:7bccad3c277f
Parent:
0:805cf4bfa472
revised

Who changed what in which revision?

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