Cutoff frequency variable LPF and HPF 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 Nov 10 03:03:18 2014 +0000
Revision:
0:ea9a0c65a7dd
1

Who changed what in which revision?

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