Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: F746_GUI F746_SAI_IO FrequencyResponseDrawer SD_PlayerSkeleton UIT_FFT_Real
MyAcousticEffector_MIC/Biquad.hpp@5:0e14065569ea, 2016-11-10 (annotated)
- Committer:
- MikamiUitOpen
- Date:
- Thu Nov 10 12:47:56 2016 +0000
- Revision:
- 5:0e14065569ea
- Parent:
- 0:224dccbc4edd
6
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
MikamiUitOpen | 0:224dccbc4edd | 1 | //-------------------------------------------------------------- |
MikamiUitOpen | 0:224dccbc4edd | 2 | // 縦続形 IIR フィルタで使う 1D タイプの 2 次のフィルタ |
MikamiUitOpen | 0:224dccbc4edd | 3 | // Biquad filter of 1D type for IIR filter of cascade structure |
MikamiUitOpen | 0:224dccbc4edd | 4 | // このクラスでは,係数は実行中に書き換えられることを想定している |
MikamiUitOpen | 0:224dccbc4edd | 5 | // |
MikamiUitOpen | 0:224dccbc4edd | 6 | // u[n] = x[n] + a1*u[n-1] + a2*u[n-2] |
MikamiUitOpen | 0:224dccbc4edd | 7 | // y[n] = u[n] + b1*u[n-1] + b2*u[n-2] |
MikamiUitOpen | 0:224dccbc4edd | 8 | // x[n] : input signal |
MikamiUitOpen | 0:224dccbc4edd | 9 | // y[n] : output signal |
MikamiUitOpen | 0:224dccbc4edd | 10 | // b0 = 1 |
MikamiUitOpen | 0:224dccbc4edd | 11 | // |
MikamiUitOpen | 5:0e14065569ea | 12 | // 2016/11/08, Copyright (c) 2016 MIKAMI, Naoki |
MikamiUitOpen | 0:224dccbc4edd | 13 | //-------------------------------------------------------------- |
MikamiUitOpen | 0:224dccbc4edd | 14 | |
MikamiUitOpen | 0:224dccbc4edd | 15 | #ifndef IIR_BIQUAD_HPP |
MikamiUitOpen | 0:224dccbc4edd | 16 | #define IIR_BIQUAD_HPP |
MikamiUitOpen | 0:224dccbc4edd | 17 | |
MikamiUitOpen | 0:224dccbc4edd | 18 | #include "mbed.h" |
MikamiUitOpen | 0:224dccbc4edd | 19 | |
MikamiUitOpen | 0:224dccbc4edd | 20 | // 2nd order IIR filter |
MikamiUitOpen | 0:224dccbc4edd | 21 | namespace Mikami |
MikamiUitOpen | 0:224dccbc4edd | 22 | { |
MikamiUitOpen | 0:224dccbc4edd | 23 | class Biquad |
MikamiUitOpen | 0:224dccbc4edd | 24 | { |
MikamiUitOpen | 0:224dccbc4edd | 25 | public: |
MikamiUitOpen | 0:224dccbc4edd | 26 | struct Coefs { float a1, a2, b1, b2; }; |
MikamiUitOpen | 0:224dccbc4edd | 27 | |
MikamiUitOpen | 0:224dccbc4edd | 28 | Biquad() {} // Default constructore |
MikamiUitOpen | 0:224dccbc4edd | 29 | |
MikamiUitOpen | 0:224dccbc4edd | 30 | Biquad(const Coefs ck) |
MikamiUitOpen | 0:224dccbc4edd | 31 | { |
MikamiUitOpen | 0:224dccbc4edd | 32 | SetCoefficients(ck); |
MikamiUitOpen | 0:224dccbc4edd | 33 | Clear(); |
MikamiUitOpen | 0:224dccbc4edd | 34 | } |
MikamiUitOpen | 0:224dccbc4edd | 35 | |
MikamiUitOpen | 5:0e14065569ea | 36 | void SetCoefficients(const Coefs cf) { cf_ = cf; } |
MikamiUitOpen | 0:224dccbc4edd | 37 | |
MikamiUitOpen | 0:224dccbc4edd | 38 | float Execute(float xn) |
MikamiUitOpen | 0:224dccbc4edd | 39 | { |
MikamiUitOpen | 5:0e14065569ea | 40 | float un = xn + cf_.a1*un1_ + cf_.a2*un2_; |
MikamiUitOpen | 5:0e14065569ea | 41 | float yn = un + cf_.b1*un1_ + cf_.b2*un2_; |
MikamiUitOpen | 0:224dccbc4edd | 42 | |
MikamiUitOpen | 0:224dccbc4edd | 43 | un2_ = un1_; |
MikamiUitOpen | 0:224dccbc4edd | 44 | un1_ = un; |
MikamiUitOpen | 0:224dccbc4edd | 45 | |
MikamiUitOpen | 0:224dccbc4edd | 46 | return yn; |
MikamiUitOpen | 0:224dccbc4edd | 47 | } |
MikamiUitOpen | 0:224dccbc4edd | 48 | |
MikamiUitOpen | 0:224dccbc4edd | 49 | void Clear() { un1_ = un2_ = 0; } |
MikamiUitOpen | 0:224dccbc4edd | 50 | |
MikamiUitOpen | 0:224dccbc4edd | 51 | private: |
MikamiUitOpen | 5:0e14065569ea | 52 | Coefs cf_; |
MikamiUitOpen | 0:224dccbc4edd | 53 | float un1_, un2_; |
MikamiUitOpen | 0:224dccbc4edd | 54 | |
MikamiUitOpen | 0:224dccbc4edd | 55 | // disallow copy constructor |
MikamiUitOpen | 0:224dccbc4edd | 56 | Biquad(const Biquad&); |
MikamiUitOpen | 0:224dccbc4edd | 57 | }; |
MikamiUitOpen | 0:224dccbc4edd | 58 | } |
MikamiUitOpen | 0:224dccbc4edd | 59 | #endif // IIR_BIQUAD_HPP |