Esempio n. 1
0
        public void ProcessSignalAtCutOffFrequencyTestTest()
        {
            const double fd  = 100;
            const double dt  = 1 / fd;
            const double f0  = 10;
            const double eps = 3e-3;

            const double A0 = sqrt_2;
            var          x0 = new SamplesDigitalSignal(dt, 1024, t => A0 * Cos(2 * PI * f0 * t));

            var x0_power = x0.Power;

            Assert.AreEqual(1, x0_power, eps);

            var rc = new LowPassRC(f0, dt);

            var y0 = rc.Process(x0);

            var y0_power = y0.Power;

            Assert.AreEqual(x0_power / 2, y0_power, eps);
        }
Esempio n. 2
0
        public void ImpulseResponseTest()
        {
            const double fd = 100;
            const double dt = 1 / fd;
            const double f0 = 10;

            var rc = new LowPassRC(f0, dt);

            var a = rc.A;
            var b = rc.B;

            var a0 = a[0];
            var a1 = a[1] / a0;
            var b0 = b[0] / a0;
            var b1 = b[1] / a0;

            var expected_impulse_response = new List <double>
            {
                b0,
                b0 * -a1 + b1,
                b0 * -a1 * -a1 + b1 * -a1,
                b0 * -a1 * -a1 * -a1 + b1 * -a1 * -a1,
                b0 * -a1 * -a1 * -a1 * -a1 + b1 * -a1 * -a1 * -a1,
                b0 * -a1 * -a1 * -a1 * -a1 * -a1 + b1 * -a1 * -a1 * -a1 * -a1,
            };

            var delta = new double[expected_impulse_response.Count];

            delta[0] = 1;

            var impulse_response = rc.Process(delta).ToArray();

            const double eps = 1e-17;

            CollectionAssert.AreEqual(expected_impulse_response, impulse_response, GetComparer(eps));
        }