Exemple #1
0
        protected static double GetTransmigrationCoefficient(AnalogBasedFilter Filter, double f0, int N)
        {
            var x = f0 is 0d
                ? MathEnumerableSignal.Const(Filter.dt, N)
                : MathEnumerableSignal.Sin(Filter.dt, f0, N);

            var y = Filter.ProcessIndividual(x);

            //var vv = y.Samples.Select(v => new Vector2D(v.Time, v.Value));
            return(y.Power / x.Power);
        }
Exemple #2
0
        private static void CheckBandStop(AnalogBasedFilter Filter, AnalogBasedFilter.Specification Specification, int N)
        {
            var kps_05 = GetTransmigrationCoefficient(Filter, Specification.fp + (Specification.fs - Specification.fp) / 2, N).In_dB_byPower();

            Assert.That.Value(kps_05).LessThan(-Specification.Rp);

            var ks = GetTransmigrationCoefficient(Filter, Specification.fs, N).In_dB_byPower();

            Assert.That.Value(ks).LessOrEqualsThan(-Specification.Rs);

            var df = Specification.fp / 10;

            for (var f0 = Specification.fs; f0 < Specification.fd / 2; f0 += df)
            {
                var k = GetTransmigrationCoefficient(Filter, f0, N).In_dB_byPower();
                Assert.That.Value(k).LessThan(-Specification.Rs);
            }
        }
Exemple #3
0
        /// <summary>Проверка фильтра в полосе пропускания</summary>
        /// <param name="Filter">Проверяемый фильтр</param>
        /// <param name="Specification"></param>
        /// <param name="N"></param>
        private static void CheckBandPass(AnalogBasedFilter Filter, AnalogBasedFilter.Specification Specification, int N)
        {
            var k0 = GetTransmigrationCoefficient(Filter, 0, N).In_dB_byPower();

            Assert.That.Value(k0).GreaterThan(-Specification.Rp);

            var df = Specification.fp / 10;

            for (var f0 = df; Specification.fp - f0 > df; f0 += df)
            {
                var k = GetTransmigrationCoefficient(Filter, f0, N).In_dB_byPower();
                Assert.That.Value(k).GreaterThan(-Specification.Rp, 0.5, $"f0:{f0} fp:{Specification.fp}");
            }

            var kp = GetTransmigrationCoefficient(Filter, Specification.fp, N).In_dB_byPower();

            Assert.That.Value(kp).IsEqual(-Specification.Rp, 0.1);

            var kps_01 = GetTransmigrationCoefficient(Filter, Specification.fp + (Specification.fs - Specification.fp) / 10, N).In_dB_byPower();

            Assert.That.Value(kps_01).LessThan(-Specification.Rp).GreaterThan(-Specification.Rs);
        }
Exemple #4
0
 protected static void CheckTransmissionGreaterThan(AnalogBasedFilter Filter, double Gdb, Interval Freq, double Accuracy = 0, int M = 100, int N = 10000) =>
 CheckTransmissionGreaterThan(Filter, Gdb, Freq.Min, Freq.Max, Accuracy, M, N);