add - CQpub0 Mikami / FIR_LPF_Direct

Dependencies:   mbed

Committer:
nagasm
Date:
Mon Dec 15 10:33:45 2014 +0000
Revision:
0:5bbdcb797a66
add - CQpub0 Mikami / FIR_LPF_Direct

Who changed what in which revision?

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