IIR Cascade
Dependencies: DSP_MultirateLinearphase mbed
Biquad.hpp
00001 //-------------------------------------------------------------- 00002 // 縦続形 IIR フィルタの構成要素として使う 2 次の IIR フィルタ 00003 // b0 は 1 と仮定している 00004 // 00005 // 2022/01/18, Copyright (c) 2022 MIKAMI, Naoki 00006 //-------------------------------------------------------------- 00007 00008 #include "mbed.h" 00009 00010 #ifndef IIR_BIQUAD_HPP 00011 #define IIR_BIQUAD_HPP 00012 00013 class Biquad 00014 { 00015 public: 00016 // フィルタの係数に対応する構造体 00017 struct Coefs { float a1, a2, b1, b2; }; 00018 00019 // コンストラクタ 00020 Biquad(const Coefs ck = (Coefs){0, 0, 0, 0}) 00021 : a1_(ck.a1), a2_(ck.a2), b1_(ck.b1), b2_(ck.b2), 00022 vn1_(0), vn2_(0) {} 00023 00024 // 2 次のフィルタを実行する 00025 float Execute(float xn) 00026 { 00027 float vn = xn + a1_*vn1_ + a2_*vn2_; 00028 float yn = vn + b1_*vn1_ + b2_*vn2_; 00029 00030 vn2_ = vn1_; 00031 vn1_ = vn; 00032 00033 return yn; 00034 } 00035 00036 private: 00037 float a1_, a2_, b1_, b2_; // フィルタの係数 00038 float vn1_, vn2_; // 遅延器 00039 }; 00040 #endif // IIR_BIQUAD_HPP
Generated on Tue Sep 13 2022 07:49:12 by 1.7.2