Cutoff frequency variable LPF by 160th-order FIR filter designed by window method usin Hamming window for ST Nucleo F401RE.

Dependencies:   UIT_ACM1602NI UIT_ADDA mbed

Committer:
MikamiUitOpen
Date:
Mon Dec 08 05:47:04 2014 +0000
Revision:
6:ccd700fb3f3a
Parent:
0:b8bffbcb85fd
7

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 0:b8bffbcb85fd 1 //------------------------------------------------------------------------------
MikamiUitOpen 0:b8bffbcb85fd 2 // Design of FIR filter of LPF and HPF using window method -- Header
MikamiUitOpen 0:b8bffbcb85fd 3 //
MikamiUitOpen 0:b8bffbcb85fd 4 // 2014/11/09, Copyright (c) 2014 MIKAMI, Naoki
MikamiUitOpen 0:b8bffbcb85fd 5 //------------------------------------------------------------------------------
MikamiUitOpen 0:b8bffbcb85fd 6
MikamiUitOpen 0:b8bffbcb85fd 7 #ifndef HAMMING_WINDOWING_DESIGN_HPP
MikamiUitOpen 0:b8bffbcb85fd 8 #define HAMMING_WINDOWING_DESIGN_HPP
MikamiUitOpen 0:b8bffbcb85fd 9
MikamiUitOpen 0:b8bffbcb85fd 10 #include "mbed.h"
MikamiUitOpen 0:b8bffbcb85fd 11
MikamiUitOpen 0:b8bffbcb85fd 12 namespace Mikami
MikamiUitOpen 0:b8bffbcb85fd 13 {
MikamiUitOpen 0:b8bffbcb85fd 14 class WindowingDesign
MikamiUitOpen 0:b8bffbcb85fd 15 {
MikamiUitOpen 0:b8bffbcb85fd 16 public:
MikamiUitOpen 0:b8bffbcb85fd 17 struct Coefs { float a1, a2, b1; };
MikamiUitOpen 0:b8bffbcb85fd 18 enum Type { LPF, HPF };
MikamiUitOpen 0:b8bffbcb85fd 19
MikamiUitOpen 0:b8bffbcb85fd 20 // Constructor
MikamiUitOpen 0:b8bffbcb85fd 21 WindowingDesign(int order, float fs);
MikamiUitOpen 0:b8bffbcb85fd 22
MikamiUitOpen 0:b8bffbcb85fd 23 //Destructor
MikamiUitOpen 0:b8bffbcb85fd 24 ~WindowingDesign()
MikamiUitOpen 0:b8bffbcb85fd 25 {
MikamiUitOpen 0:b8bffbcb85fd 26 delete[] hm_;
MikamiUitOpen 0:b8bffbcb85fd 27 delete[] wn_;
MikamiUitOpen 0:b8bffbcb85fd 28 }
MikamiUitOpen 0:b8bffbcb85fd 29
MikamiUitOpen 0:b8bffbcb85fd 30 // Execution of design
MikamiUitOpen 0:b8bffbcb85fd 31 void Design(int order, Type pb, float fc, float hk[]);
MikamiUitOpen 0:b8bffbcb85fd 32
MikamiUitOpen 0:b8bffbcb85fd 33 private:
MikamiUitOpen 0:b8bffbcb85fd 34 static const float PI_ = 3.1415926536f;
MikamiUitOpen 0:b8bffbcb85fd 35 const float FS_; // Sampling frequency
MikamiUitOpen 0:b8bffbcb85fd 36 const float PI_FS_;
MikamiUitOpen 0:b8bffbcb85fd 37
MikamiUitOpen 0:b8bffbcb85fd 38 float *hm_; // For coefficients
MikamiUitOpen 0:b8bffbcb85fd 39 float *wn_; // For Windwo
MikamiUitOpen 0:b8bffbcb85fd 40
MikamiUitOpen 0:b8bffbcb85fd 41 int order_; // Order
MikamiUitOpen 0:b8bffbcb85fd 42 float fC_; // Cutoff frequency
MikamiUitOpen 0:b8bffbcb85fd 43
MikamiUitOpen 0:b8bffbcb85fd 44 // Calculation of coefficients for LPF
MikamiUitOpen 0:b8bffbcb85fd 45 void LpfCoefficients();
MikamiUitOpen 0:b8bffbcb85fd 46 // Transform LPF to HPF
MikamiUitOpen 0:b8bffbcb85fd 47 void ToHpf();
MikamiUitOpen 0:b8bffbcb85fd 48 // Hamming window
MikamiUitOpen 0:b8bffbcb85fd 49 void HammWindow();
MikamiUitOpen 0:b8bffbcb85fd 50 };
MikamiUitOpen 0:b8bffbcb85fd 51 }
MikamiUitOpen 0:b8bffbcb85fd 52 #endif // HAMMING_WINDOWING_DESIGN_HPP