ファンクション・ジェネレータ
Dependencies: mbed SerialTxRxIntr MyTicker7 Array_Matrix
Diff: IIR_Cascade/IIR_Cascade.cpp
- Revision:
- 0:17c762b41fc7
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/IIR_Cascade/IIR_Cascade.cpp Sat Oct 17 10:05:58 2020 +0000 @@ -0,0 +1,40 @@ +//--------------------------------------------------- +// 縦続形 IIR フィルタ +// +// 2020/05/30, Copyright (c) 2020 MIKAMI, Naoki +//--------------------------------------------------- + +#include "IIR_Cascade.hpp" + +namespace Mikami +{ + // コンストラクタ + IirCascade::IirCascade(int order, const Biquad::Coefs ck[], float g0) + { + SetCoefs(order, ck, g0); + Clear(); + } + + // フィルタ処理を実行する + float IirCascade::Execute(float xn) + { + float yn = g0_*xn; + for (int k=0; k<hOrder_; k++) yn = bq_[k].Execute(yn); + return yn; + } + + // 係数の設定 + void IirCascade::SetCoefs(int order, const Biquad::Coefs ck[], float g0) + { + printf("SetCoefs called!\r\n"); + if (hOrder_ != ((order+1)>>1)) + { + hOrder_ = (order+1)>>1; + bq_.SetSize(hOrder_); + Clear(); + printf("Order changed!\r\n"); + } + g0_ = g0; + for (int k=0; k<hOrder_; k++) bq_[k].SetCoefs(ck[k]); + } +} \ No newline at end of file