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

Dependencies:   Array_Matrix mbed SerialTxRxIntr UIT_FFT_Real

IIR_Filter/IIR_Cascade.hpp

Committer:
MikamiUitOpen
Date:
2020-04-02
Revision:
5:5e55a5f440c0
Parent:
0:a80f730d32a8

File content as of revision 5:5e55a5f440c0:

//---------------------------------------------------
//  縦続形 IIR フィルタ
//
// 2019/11/12, Copyright (c) 2019 MIKAMI, Naoki
//---------------------------------------------------

#ifndef IIR_CASCADE_HPP
#define IIR_CASCADE_HPP

#include "Biquad.hpp"
#include "Array.hpp"    // Array クラスが定義されている
using namespace Mikami;

class IirCascade
{
public:
    // コンストラクタ
    IirCascade(int order, const Biquad hk[], float g0)
        : ORDER2_((order+1)/2), G0_(g0), hn_((order+1)/2, hk) {}

    // フィルタ処理を実行する
    float Execute(float xn)
    {
        float yn = G0_*xn;
        for (int k=0; k<ORDER2_; k++) yn = hn_[k].Execute(yn);
        return yn;
    }

private:
    const int ORDER2_;  // 次数/2,ただし次数が奇数の場合は(次数+1)/2
    const float G0_;    // 利得定数
    Array<Biquad> hn_;  // Biquad クラスのオブジェクトの配列

    // コピー・コンストラクタおよび代入演算子の禁止のため
    IirCascade(const IirCascade& );
    IirCascade& operator=(const IirCascade& );
};
#endif  // IIR_CASCADE_HPP