Nucleo-F446 による遮断周波数可変 LPF/HPF .DA変換器にデータを送る際は 4 倍にアップ・サンプリング.
Dependencies: mbed SerialTxRxIntr F446_AD_DA_MultirateSWI
IIR_Design/BilinearDesignLH.hpp
- Committer:
- MikamiUitOpen
- Date:
- 2018-06-05
- Revision:
- 0:89d173001e82
File content as of revision 0:89d173001e82:
//------------------------------------------------------------------------ // 双一次z変換によるバタワースフィルタの設計(ヘッダ) // LPF, HPF のみ // // 2018/05/14, Copyright (c) 2018 MIKAMI, Naoki //------------------------------------------------------------------------ #ifndef BILINEAR_BUTTERWORTH_HPP #define BILINEAR_BUTTERWORTH_HPP #include "mbed.h" #include <complex> // requisite #include "Array.hpp" #include "Biquad.hpp" namespace Mikami { typedef complex<float> Complex; // "Complex" を定義する class BilinearDesign { public: enum Type { LPF, HPF }; // コンストラクタ BilinearDesign(int order, float fs) : PI_FS_(PI_/fs), ORDER_(order), sP_(order/2), zP_(order/2), ck_(order/2) {} // デストラクタ virtual ~BilinearDesign() {} // 設計の実行 void Execute(float fc, Type pb, Biquad::Coefs c[], float& g); private: static const float PI_ = 3.1415926536f; const float PI_FS_; const int ORDER_; Array<Complex> sP_; // s 平面上の極 Array<Complex> zP_; // z 平面上の極 Array<Biquad::Coefs> ck_; // Biquad構造の部分の係数 float gain_; // 利得定数 void Butterworth(); void Bilinear(float fc); void ToCascade(Type pb); void GetGain(Type pb); void GetCoefs(Biquad::Coefs c[], float& gain); }; } #endif // BILINEAR_BUTTERWORTH_HPP