Cutoff frequency variable LPF, HPF, BPF, and BRF by FIR 160th-order filter.

Dependencies:   UIT_ACM1602NI UITDSP_ADDA mbed UIT_AQM1602

Committer:
MikamiUitOpen
Date:
Sat Jul 25 06:36:06 2015 +0000
Revision:
3:24b6aa1a19ba
Parent:
0:ca94cfc90365
4

Who changed what in which revision?

UserRevisionLine numberNew 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