public void ChebyshevII() { var specification = Information.GetSpecification(); var filter = new ChebyshevLowPass(specification, ChebyshevFilter.ChebyshevType.II); CheckChebyshevII(filter); }
/// <summary>Тест фильтра Чебышева II-рода</summary> /// <param name="filter">Тестируемый фильтр чебышева</param> /// <param name="N">Число точек сигнала</param> protected static void CheckChebyshevII(ChebyshevLowPass filter, int N = 100) { // Фильтр должен быть фильтром Чебышева второго рода Assert.That.Value(filter.FilterType).IsEqual(ChebyshevFilter.ChebyshevType.II); var specification = filter.Spec; // Коэффициент передачи на нулевой частоте должен быть не больше коэффициента подавления в полосе пропускания var k0 = GetTransmigrationCoefficient(filter, 0, N).In_dB_byPower(); Assert.That.Value(k0).GreaterOrEqualsThan(-specification.Rp); // Коэффициент передачи на граничной частоте полосы пропускания должно быть меньше коэффициента передачи в полосе пропускания var kp = GetTransmigrationCoefficient(filter, specification.fp, N).In_dB_byPower(); Assert.That.Value(kp).LessThan(-specification.Rp); // Коэффициент передачи на граничной частоте полосы заграждения должен быть меньше коэффициента пропускания полосы подавления var ks = GetTransmigrationCoefficient(filter, specification.fs, N).In_dB_byPower(); Assert.That.Value(ks).LessOrEqualsThan(-specification.Rs); // Коэффициенты передачи в полосе заграждения должен быть не больше чем коэффициент передачи полосы заграждения for (var(f0, df) = (specification.fs, specification.fd / 2 / 100); f0 <= specification.fd / 2; f0 += df) { var k = GetTransmigrationCoefficient(filter, f0, N).In_dB_byPower(); Assert.That.Value(k).LessThan(-specification.Rs); } }