CQ出版社セミナ,2021/12/07開催「実習・C++言語によるArmマイコンのプログラミング」で使うプログラム.

Dependencies:   Array_Matrix mbed SerialTxRxIntr UIT_FFT_Real

Committer:
MikamiUitOpen
Date:
Thu Apr 02 01:12:34 2020 +0000
Revision:
5:5e55a5f440c0
Parent:
0:a80f730d32a8
6

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 0:a80f730d32a8 1 //---------------------------------------------------
MikamiUitOpen 0:a80f730d32a8 2 // 縦続形 IIR フィルタ
MikamiUitOpen 0:a80f730d32a8 3 //
MikamiUitOpen 0:a80f730d32a8 4 // 2019/11/12, Copyright (c) 2019 MIKAMI, Naoki
MikamiUitOpen 0:a80f730d32a8 5 //---------------------------------------------------
MikamiUitOpen 0:a80f730d32a8 6
MikamiUitOpen 0:a80f730d32a8 7 #ifndef IIR_CASCADE_HPP
MikamiUitOpen 0:a80f730d32a8 8 #define IIR_CASCADE_HPP
MikamiUitOpen 0:a80f730d32a8 9
MikamiUitOpen 0:a80f730d32a8 10 #include "Biquad.hpp"
MikamiUitOpen 0:a80f730d32a8 11 #include "Array.hpp" // Array クラスが定義されている
MikamiUitOpen 0:a80f730d32a8 12 using namespace Mikami;
MikamiUitOpen 0:a80f730d32a8 13
MikamiUitOpen 0:a80f730d32a8 14 class IirCascade
MikamiUitOpen 0:a80f730d32a8 15 {
MikamiUitOpen 0:a80f730d32a8 16 public:
MikamiUitOpen 0:a80f730d32a8 17 // コンストラクタ
MikamiUitOpen 0:a80f730d32a8 18 IirCascade(int order, const Biquad hk[], float g0)
MikamiUitOpen 0:a80f730d32a8 19 : ORDER2_((order+1)/2), G0_(g0), hn_((order+1)/2, hk) {}
MikamiUitOpen 0:a80f730d32a8 20
MikamiUitOpen 0:a80f730d32a8 21 // フィルタ処理を実行する
MikamiUitOpen 0:a80f730d32a8 22 float Execute(float xn)
MikamiUitOpen 0:a80f730d32a8 23 {
MikamiUitOpen 0:a80f730d32a8 24 float yn = G0_*xn;
MikamiUitOpen 0:a80f730d32a8 25 for (int k=0; k<ORDER2_; k++) yn = hn_[k].Execute(yn);
MikamiUitOpen 0:a80f730d32a8 26 return yn;
MikamiUitOpen 0:a80f730d32a8 27 }
MikamiUitOpen 0:a80f730d32a8 28
MikamiUitOpen 0:a80f730d32a8 29 private:
MikamiUitOpen 0:a80f730d32a8 30 const int ORDER2_; // 次数/2,ただし次数が奇数の場合は(次数+1)/2
MikamiUitOpen 0:a80f730d32a8 31 const float G0_; // 利得定数
MikamiUitOpen 0:a80f730d32a8 32 Array<Biquad> hn_; // Biquad クラスのオブジェクトの配列
MikamiUitOpen 0:a80f730d32a8 33
MikamiUitOpen 0:a80f730d32a8 34 // コピー・コンストラクタおよび代入演算子の禁止のため
MikamiUitOpen 0:a80f730d32a8 35 IirCascade(const IirCascade& );
MikamiUitOpen 0:a80f730d32a8 36 IirCascade& operator=(const IirCascade& );
MikamiUitOpen 0:a80f730d32a8 37 };
MikamiUitOpen 0:a80f730d32a8 38 #endif // IIR_CASCADE_HPP
MikamiUitOpen 0:a80f730d32a8 39