/// <summary> /// 同じフィルター特性で、ディレイの状態も同じだが、ディレイの実体が異なるインスタンスを作る。 /// </summary> public IIRFilterGraph CreateCopy() { var r = new IIRFilterParallel(); for (int i = 0; i < mFilterBlockList.Count; ++i) { var fb = mFilterBlockList[i]; r.mFilterBlockList.Add(fb.CreateCopy()); } return(r); }
public IIRFilterGraph CreateIIRFilterGraph() { IIRFilterGraph iirFilter = null; // フィルターを作る。 // 実数係数版の多項式を使用。 switch (mMethod) { case Method.ImpulseInvarianceMinimumPhase: iirFilter = new IIRFilterSerial(); break; case Method.ImpulseInvarianceMixedPhase: case Method.Bilinear: iirFilter = new IIRFilterParallel(); break; } switch (mMethod) { case Method.Bilinear: for (int i = 0; i < mIIRBilinear.RealHzCount(); ++i) { RealRationalPolynomial p = mIIRBilinear.RealHz(i); Console.WriteLine("{0}", p.ToString("(z)^(-1)")); iirFilter.Add(p); } break; case Method.ImpulseInvarianceMinimumPhase: case Method.ImpulseInvarianceMixedPhase: for (int i = 0; i < mIIRiim.RealHzCount(); ++i) { RealRationalPolynomial p = mIIRiim.RealHz(i); Console.WriteLine("{0}", p.ToString("(z)^(-1)")); iirFilter.Add(p); } break; } return(iirFilter); }