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
Diff: WindowingDesignLpfHpf/WindowingDesignLH.hpp
- Revision:
- 7:46327dcab1bf
- Parent:
- 0:ea9a0c65a7dd
diff -r e4b8e25573f3 -r 46327dcab1bf WindowingDesignLpfHpf/WindowingDesignLH.hpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WindowingDesignLpfHpf/WindowingDesignLH.hpp Mon Dec 08 05:46:37 2014 +0000 @@ -0,0 +1,52 @@ +//------------------------------------------------------------------------------ +// Design of FIR filter of LPF and HPF using window method -- Header +// +// 2014/11/09, Copyright (c) 2014 MIKAMI, Naoki +//------------------------------------------------------------------------------ + +#ifndef HAMMING_WINDOWING_DESIGN_HPP +#define HAMMING_WINDOWING_DESIGN_HPP + +#include "mbed.h" + +namespace Mikami +{ + class WindowingDesign + { + public: + struct Coefs { float a1, a2, b1; }; + enum Type { LPF, HPF }; + + // Constructor + WindowingDesign(int order, float fs); + + //Destructor + ~WindowingDesign() + { + delete[] hm_; + delete[] wn_; + } + + // Execution of design + void Design(int order, Type pb, float fc, float hk[]); + + private: + static const float PI_ = 3.1415926536f; + const float FS_; // Sampling frequency + const float PI_FS_; + + float *hm_; // For coefficients + float *wn_; // For Windwo + + int order_; // Order + float fC_; // Cutoff frequency + + // Calculation of coefficients for LPF + void LpfCoefficients(); + // Transform LPF to HPF + void ToHpf(); + // Hamming window + void HammWindow(); + }; +} +#endif // HAMMING_WINDOWING_DESIGN_HPP