//--------------------------------------------------------------
// 縦続形の IIR フィルタ
//
//		作成者：三上直樹，2023/01/21 作成，ⓒ三上直樹 2023
//--------------------------------------------------------------

using System.Linq;

namespace Mikami.Filter
{
	public class IIR_CascadeF
	{
		private readonly BiquadF[] hk_;
		private readonly float g0_;
		
		// コンストラクタ
		public IIR_CascadeF(BiquadF.Coefs[] ck, float g0)
		{
			hk_ = ck.Select(c => new BiquadF(c)).ToArray();
			g0_ = g0;
		}

		// フィルタを実行する
		public float Execute(float xn)
		{
			float y = g0_*xn;
			for (int k=0; k<hk_.Length; k++) y = hk_[k].Execute(y);
			return y;
		}
	}
}
