![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Cutoff frequency variable LPF, HPF, BPF, and BRF by FIR 160th-order filter.
Dependencies: UIT_ACM1602NI UITDSP_ADDA mbed UIT_AQM1602
WindowingDesign/WindowingDesign.hpp@0:ca94cfc90365, 2014-12-08 (annotated)
- Committer:
- MikamiUitOpen
- Date:
- Mon Dec 08 08:14:48 2014 +0000
- Revision:
- 0:ca94cfc90365
1
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
MikamiUitOpen | 0:ca94cfc90365 | 1 | //------------------------------------------------------------------------------ |
MikamiUitOpen | 0:ca94cfc90365 | 2 | // Design of FIR filter of 4 type passbands using window method -- Header |
MikamiUitOpen | 0:ca94cfc90365 | 3 | // |
MikamiUitOpen | 0:ca94cfc90365 | 4 | // 2014/12/07, Copyright (c) 2014 MIKAMI, Naoki |
MikamiUitOpen | 0:ca94cfc90365 | 5 | //------------------------------------------------------------------------------ |
MikamiUitOpen | 0:ca94cfc90365 | 6 | |
MikamiUitOpen | 0:ca94cfc90365 | 7 | #ifndef HAMMING_WINDOWING_DESIGN_HPP |
MikamiUitOpen | 0:ca94cfc90365 | 8 | #define HAMMING_WINDOWING_DESIGN_HPP |
MikamiUitOpen | 0:ca94cfc90365 | 9 | |
MikamiUitOpen | 0:ca94cfc90365 | 10 | #include "mbed.h" |
MikamiUitOpen | 0:ca94cfc90365 | 11 | |
MikamiUitOpen | 0:ca94cfc90365 | 12 | namespace Mikami |
MikamiUitOpen | 0:ca94cfc90365 | 13 | { |
MikamiUitOpen | 0:ca94cfc90365 | 14 | class WindowingDesign |
MikamiUitOpen | 0:ca94cfc90365 | 15 | { |
MikamiUitOpen | 0:ca94cfc90365 | 16 | public: |
MikamiUitOpen | 0:ca94cfc90365 | 17 | struct Coefs { float a1, a2, b1; }; |
MikamiUitOpen | 0:ca94cfc90365 | 18 | enum Type { LPF, HPF, BPF, BRF }; |
MikamiUitOpen | 0:ca94cfc90365 | 19 | |
MikamiUitOpen | 0:ca94cfc90365 | 20 | // Constructor |
MikamiUitOpen | 0:ca94cfc90365 | 21 | WindowingDesign(int order, float fs); |
MikamiUitOpen | 0:ca94cfc90365 | 22 | |
MikamiUitOpen | 0:ca94cfc90365 | 23 | //Destructor |
MikamiUitOpen | 0:ca94cfc90365 | 24 | ~WindowingDesign() |
MikamiUitOpen | 0:ca94cfc90365 | 25 | { |
MikamiUitOpen | 0:ca94cfc90365 | 26 | delete[] hm_; |
MikamiUitOpen | 0:ca94cfc90365 | 27 | delete[] wn_; |
MikamiUitOpen | 0:ca94cfc90365 | 28 | } |
MikamiUitOpen | 0:ca94cfc90365 | 29 | |
MikamiUitOpen | 0:ca94cfc90365 | 30 | // Execution of design |
MikamiUitOpen | 0:ca94cfc90365 | 31 | void Design(int order, Type pb, float fc1, float fc2, |
MikamiUitOpen | 0:ca94cfc90365 | 32 | float hk[]); |
MikamiUitOpen | 0:ca94cfc90365 | 33 | |
MikamiUitOpen | 0:ca94cfc90365 | 34 | private: |
MikamiUitOpen | 0:ca94cfc90365 | 35 | static const float PI_ = 3.1415926536f; |
MikamiUitOpen | 0:ca94cfc90365 | 36 | const float FS_; // Sampling frequency |
MikamiUitOpen | 0:ca94cfc90365 | 37 | const float PI_FS_; |
MikamiUitOpen | 0:ca94cfc90365 | 38 | |
MikamiUitOpen | 0:ca94cfc90365 | 39 | float *hm_; // For coefficients |
MikamiUitOpen | 0:ca94cfc90365 | 40 | float *wn_; // For Windwo |
MikamiUitOpen | 0:ca94cfc90365 | 41 | |
MikamiUitOpen | 0:ca94cfc90365 | 42 | int order_; // Order |
MikamiUitOpen | 0:ca94cfc90365 | 43 | float fC_; // Cutoff frequency |
MikamiUitOpen | 0:ca94cfc90365 | 44 | |
MikamiUitOpen | 0:ca94cfc90365 | 45 | // Calculation of coefficients for LPF |
MikamiUitOpen | 0:ca94cfc90365 | 46 | void LpfCoefficients(); |
MikamiUitOpen | 0:ca94cfc90365 | 47 | // Transform LPF to HPF, BPF, or BRF |
MikamiUitOpen | 0:ca94cfc90365 | 48 | void Transform(Type pb, float w0); |
MikamiUitOpen | 0:ca94cfc90365 | 49 | // Hamming window |
MikamiUitOpen | 0:ca94cfc90365 | 50 | void HammWindow(); |
MikamiUitOpen | 0:ca94cfc90365 | 51 | }; |
MikamiUitOpen | 0:ca94cfc90365 | 52 | } |
MikamiUitOpen | 0:ca94cfc90365 | 53 | #endif // HAMMING_WINDOWING_DESIGN_HPP |