/// <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);
        }
示例#2
0
        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);
        }