IIR Cascade
Dependencies: DSP_MultirateLinearphase mbed
Diff: IirCascade.hpp
- Revision:
- 0:fd55988037cc
diff -r 000000000000 -r fd55988037cc IirCascade.hpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/IirCascade.hpp Tue Sep 13 07:48:33 2022 +0000 @@ -0,0 +1,37 @@ +//--------------------------------------------------- +// 縦続形 IIR フィルタ +// +// 2022/01/18, Copyright (c) 2022 MIKAMI, Naoki +//--------------------------------------------------- + +#include "Biquad.hpp" +#include "Array.hpp" // Array クラスが定義されている +using Mikami::Array; + +#ifndef IIR_CASCADE_HPP +#define IIR_CASCADE_HPP + +class IirCascade +{ +public: + // コンストラクタ + IirCascade(int order, const Biquad::Coefs ck[], float g0) + : ORDER_(order), G0_(g0), hn_((order+1)/2) + { + for (int k=0; k<(order+1)/2; k++) hn_[k] = Biquad(ck[k]); + } + + // フィルタ処理を実行する + float Execute(float xn) + { + float yn = G0_*xn; + for (int k=0; k<(ORDER_+1)/2; k++) yn = hn_[k].Execute(yn); + return yn; + } + +private: + const int ORDER_; // 次数 + const float G0_; // 利得定数 + Array<Biquad> hn_; // Biquad クラスのオブジェクトの配列 +}; +#endif // IIR_CASCADE_HPP \ No newline at end of file