|
| 1 | +# Фильтры Баттерворта |
| 2 | + |
| 3 | +Главные особенности: |
| 4 | +- АЧХ в полосе пропускания без ряби (maximally flat) |
| 5 | +- Переходная полоса шире при равных допусках, чем у Чебышева и эллиптических |
| 6 | +- Порядок выше, чем у Чебышева/эллиптических для тех же `Rp`, `Rs` |
| 7 | +- Фаза более гладкая, чем у Чебышева и эллиптических |
| 8 | +- Выбор: когда важны ровность амплитуды и умеренная фазовая гладкость, а минимальная крутизна не критична |
| 9 | + |
| 10 | +Реализации: |
| 11 | +- ФНЧ: `ButterworthLowPass` |
| 12 | +- ФВЧ: `ButterworthHighPass` |
| 13 | +- ППФ: `ButterworthBandPass` |
| 14 | +- ПЗФ: `ButterworthBandStop` |
| 15 | + |
| 16 | +# Фильтры Чебышева |
| 17 | + |
| 18 | +Главные особенности: |
| 19 | +- Типы (роды): I (рябь в passband), II (рябь в stopband), IICorrected (корректированный II) |
| 20 | +- Уже переходная полоса при меньшем порядке, чем у Баттерворта |
| 21 | +- Рябь только в одной из полос (в зависимости от рода) |
| 22 | +- Фаза менее гладкая, возможны колебания групповой задержки |
| 23 | +- Выбор: когда нужна повышенная крутизна и допустима рябь в строго одной полосе |
| 24 | + |
| 25 | +Реализации: |
| 26 | +- ФНЧ: `ChebyshevLowPass` (типы I/II/IICorrected) |
| 27 | +- ФВЧ: `ChebyshevHighPass` (типы I/II/IICorrected) |
| 28 | +- ППФ: `ChebyshevBandPass` (типы I/II/IICorrected) |
| 29 | +- ПЗФ: `ChebyshevBandStop` (типы I/II/IICorrected) |
| 30 | + |
| 31 | +# Эллиптические (Кауэра) фильтры |
| 32 | + |
| 33 | +Главные особенности: |
| 34 | +- Рябь (equiripple) одновременно в полосе пропускания и заграждения |
| 35 | +- Минимальный порядок для заданных допусков `Rp`, `Rs` |
| 36 | +- Самая узкая переходная полоса (максимальная крутизна) |
| 37 | +- Наихудшая линейность фазы среди реализованных типов |
| 38 | +- Выбор: когда критичны минимальный порядок и максимальная селективность, фазовая нелинейность некритична или компенсируется |
| 39 | + |
| 40 | +Реализации: |
| 41 | +- ФНЧ: `EllipticLowPass` |
| 42 | +- ФВЧ: `EllipticHighPass` |
| 43 | +- ППФ: `EllipticBandPass` |
| 44 | +- ПЗФ: `EllipticBandStop` |
| 45 | + |
| 46 | +# RC / RLC фильтры (простые прототипы) |
| 47 | + |
| 48 | +Назначение: быстрота расчёта, минимальная сложность, удобны как справочные/базовые элементы или для предварительной фильтрации. |
| 49 | + |
| 50 | +## RC‑цепочка (ФНЧ) |
| 51 | +- `RCLowPass`: билинейное преобразование RC‑прототипа (1 полюс). Плавный спад, −3дБ на частоте среза, монотонная АЧХ. |
| 52 | +- `RCExponentialLowPass`: экспоненциальная аппроксимация (использует экспоненту для расчёта коэффициента затухания), аналог одношагового сглаживания. |
| 53 | + |
| 54 | +## RLC‑резонансные |
| 55 | +- `RLCBandPass`: полосопропускающий (резонансный) фильтр второго порядка, задаётся центральной частотой `f0` и шириной полосы `DeltaF` (по уровню 0.707). |
| 56 | +- `RLCBandStop`: полосозаграждающий (notch) фильтр второго порядка, подавляет узкую резонансную полосу вокруг `f0`. |
| 57 | + |
| 58 | +Особенности: |
| 59 | +- Низкий порядок (1–2) обеспечивает минимальную задержку и простоту реализации |
| 60 | +- Крутизна ограничена; для строгих допусков используются Баттерворт/Чебышев/Эллиптические |
| 61 | +- Подходят для быстрой фильтрации / подавления одиночной помехи или сглаживания |
| 62 | + |
| 63 | +# БИХ базовый класс |
| 64 | + |
| 65 | +## `IIR` |
| 66 | +- Общий каркас IIR‑фильтра: хранение коэффициентов A (знаменатель) и B (числитель) |
| 67 | +- Метод `Process` реализует одношаговую рекуррентную фильтрацию (difference equation) |
| 68 | +- Методы частотного отклика и операции структурного соединения: |
| 69 | + - `ConnectionSerialTo(IIR)`: последовательное соединение (свёртка полиномов) |
| 70 | + - `ConnectionParallelTo(IIR)`: параллельное соединение (сумма откликов с нормировкой) |
| 71 | + |
| 72 | +# Структурные (комбинационные) фильтры |
| 73 | + |
| 74 | +## `SerialFilter` |
| 75 | +- Последовательное включение двух произвольных `Filter` (не только IIR). Передача выхода первого на вход второго. |
| 76 | + |
| 77 | +## `ParallelFilter` |
| 78 | +- Параллельное включение: усреднённая сумма откликов двух фильтров (балансировка усиления). |
| 79 | + |
| 80 | +Назначение структурных классов: формирование составных конфигураций (каскады и разветвления) без ручного перемножения коэффициентов, возможность комбинировать разнородные фильтры. |
| 81 | + |
| 82 | +# Абстрактный базовый класс `Filter` |
| 83 | + |
| 84 | +- Определяет базовый интерфейс: `Process`, `Reset`, `FrequencyResponse` |
| 85 | +- Строители типов: статические фабрики `LowPass`, `HighPass`, `BandPass`, `BandStop`, а также `Butterworth`, `Chebyshev`, `Elliptic` для удобного fluent‑конструирования |
| 86 | +- Перегруженные операторы: |
| 87 | + - `filter * signal` — фильтрация сигнала |
| 88 | + - `filter1 + filter2` — параллельное соединение (`ParallelFilter`) |
| 89 | + - `filter1 * filter2` — последовательное соединение (`SerialFilter`) |
| 90 | + |
| 91 | +# Методы расширения |
| 92 | + |
| 93 | +## `DigitalFilterExtension` |
| 94 | +- `GetImpulseResponse(...)`: генерация импульсной характеристики с ранним прекращением по затуханию |
| 95 | +- `GetTransientResponse(...)`: генерация переходной характеристики (единичный скачок) |
| 96 | + |
| 97 | +# Выбор типа фильтра (кратко) |
| 98 | +- Нужна ровная passband и терпима широкая переходная: Баттерворт |
| 99 | +- Требуется более крутой спад и рябь в одной полосе допустима: Чебышев (выбор рода) |
| 100 | +- Минимальный порядок и узкая переходная критичны: Эллиптический |
| 101 | +- Простое сглаживание / резонанс / узкая notch без сложных требований: RC / RLC |
| 102 | +- Комбинирование характеристик (усиление селективности, формирование окон): используйте каскады (`SerialFilter`) или параллель (`ParallelFilter`) |
| 103 | + |
| 104 | +# Сводный перечень классов |
| 105 | +- Базовые: `Filter`, `IIR` |
| 106 | +- Баттерворт: `ButterworthLowPass`, `ButterworthHighPass`, `ButterworthBandPass`, `ButterworthBandStop` |
| 107 | +- Чебышев: `ChebyshevLowPass`, `ChebyshevHighPass`, `ChebyshevBandPass`, `ChebyshevBandStop` (+ роды I / II / IICorrected) |
| 108 | +- Эллиптические: `EllipticLowPass`, `EllipticHighPass`, `EllipticBandPass`, `EllipticBandStop` |
| 109 | +- RC / RLC: `RCLowPass`, `RCExponentialLowPass`, `RLCBandPass`, `RLCBandStop` |
| 110 | +- Структурные: `SerialFilter`, `ParallelFilter` |
| 111 | +- Расширения: `DigitalFilterExtension` |
0 commit comments