예제 #1
0
        public void TestSosToTf()
        {
            var sos = new TransferFunction[4]
            {
                new TransferFunction(new[] { 1, -0.4, 0.85 }, new[] { 1, -0.1, 0 }),
                new TransferFunction(new[] { 1, -1, 0.29 }, new[] { 1, -0.7, 0.1 }),
                new TransferFunction(new[] { 1, 0.3, 0 }, new[] { 1, 1.8, 0.85 }),
                new TransferFunction(new[] { 1, -1, 0.0 }, new[] { 1, -1.6, 0.6 })
            };

            var tf = DesignFilter.SosToTf(sos);

            Assert.Multiple(() =>
            {
                Assert.That(tf.Numerator, Is.EqualTo(new[]   { 1, -2.1, 2.22, -1.624, 0.4607, 0.11725, -0.07395, 0, 0 }).Within(1e-10));
                Assert.That(tf.Denominator, Is.EqualTo(new[] { 1, -0.6, -1.42, 0.888, 0.4889, -0.4413, 0.0895, -0.0051, 0 }).Within(1e-10));
            });
        }