Цифровая обработка сигналов
IIR-фильтры
Зарядное устройство iPhone содержит Butterworth фильтр 3-го порядка для подавления пульсаций питания. ЭКГ монитор в больнице использует Chebyshev high-pass для устранения дрейфа базовой линии. Гитарный педалборд Boss содержит Elliptic фильтр для формирования тембра с минимальным количеством компонент. IIR - компактные, эффективные фильтры реального мира: 5 коэффициентов делают то, для чего FIR нужно 50.
- **Apple AirPods Pro** - Butterworth low-pass на ARM DSP чипе H2; IIR бесконечная импульсная характеристика означает что ANC продолжает адаптироваться; 48kHz at 4.8mW battery efficiency
- **ЭКГ мониторы (Philips, GE)** - Butterworth band-pass 0.05-150 Гц; high-pass 0.05 Гц убирает дрейф, low-pass 150 Гц убирает электромиографический шум; SOS реализация для стабильности 24/7
- **Software Defined Radio (RTL-SDR)** - Chebyshev Type II декимационный фильтр для снижения sample rate 2.4 MSps -> 200 kSps; рябь только в stopband не искажает демодулируемый сигнал
Фильтр Баттерворта
Аналоговый аудиоусилитель Marshall содержит Butterworth low-pass фильтр 3-го порядка: максимально плоская характеристика в полосе пропускания без ряби. Именно эту плоскость ('maximally flat') описал Стивен Баттерворт в 1930 году, и фильтр используется по сей день в аудио, медицинских приборах и аналоговых цепях.
**Butterworth**: |H(j*omega)|^2 = 1 / (1 + (omega/omega_c)^(2N)). Свойства: нет ряби в passband, монотонная характеристика, переход зависит от порядка N. N-й порядок: 6N dB/octave спад. Нули передаточной функции: все на бесконечности (only poles). Группа задержки не константна - фазовые искажения.
Почему Butterworth называют 'maximally flat' фильтром?
Фильтры Чебышева
Butterworth крутой спад требует высокого порядка. Если позволить рябь в полосе пропускания - можно получить более крутой спад при том же порядке. **Chebyshev Type I** допускает рябь в passband, **Type II** - только в stopband. Используется в медицинских ЭКГ фильтрах и SDR приёмниках.
**Chebyshev Type I**: |H|^2 = 1/(1 + eps^2 * T_N^2(omega/omega_c)), T_N - полином Чебышева. Рябь delta_p в passband, монотонный спад в stopband. **Type II** (inverse Chebyshev): нет ряби в passband, рябь в stopband. **Elliptic** (Cauer): рябь в обоих, самый крутой спад - минимальный порядок для заданных specs.
Зачем Elliptic фильтр допускает рябь и в passband и в stopband?
Билинейное преобразование
Butterworth и Chebyshev исторически разрабатывались как аналоговые фильтры (RC-цепи). Как перевести аналоговый прототип H(s) в цифровой H(z) для DSP? **Билинейное преобразование** s = 2/T * (z-1)/(z+1) отображает левую полуплоскость s-плоскости в единичную окружность z-плоскости.
**Bilinear transform** s = 2*fs * (z-1)/(z+1): устойчивые аналоговые полюсы (Re(s) < 0) -> полюсы внутри |z| < 1. Без искажений (aliasing). Но есть **warping**: omega_digital = 2*arctan(omega_analog*T/2) - нелинейное отображение частот. Нужна pre-warping целевой частоты перед проектированием.
Что такое frequency warping при билинейном преобразовании и как с ним бороться?
Стабильность IIR и квантование
IIR фильтр H(z) = B(z)/A(z) стабилен если все полюсы A(z) = 0 внутри единичной окружности |z| < 1. При реализации на 16-битном DSP коэффициенты округляются - полюсы смещаются. Если полюс выйдет за |z| = 1, фильтр станет нестабильным и его выход будет расти без ограничений.
Проблемы квантования IIR: (1) **Сдвиг полюсов**: округление коэффициентов меняет полюса. (2) **Limit cycles**: малые периодические колебания при нулевом входе. (3) **Overflow**: при integer arithmetic переполнение меняет знак. Решения: **SOS (Second-Order Sections)** - каскад Biquad 2-го порядка вместо одного высокого порядка; число с плавающей точкой (float32/64).
IIR фильтр всегда стабилен если исходный аналоговый прототип стабилен
Билинейное преобразование гарантирует стабильность теоретически. Но при квантовании коэффициентов (16-бит integer) полюса смещаются. Для фильтров высокого порядка (N > 6) со срезом вблизи DC (fc << fs/4) полюса близко к |z|=1 и квантование может вытолкнуть их за единичную окружность.
Профессиональный подход: всегда использовать SOS вместо Direct Form для N > 4, float64 при проектировании и float32 только на embedded с проверкой, мониторить |poles| после квантования. scipy.signal.butter(N, Wn, output='sos') - стандарт в production DSP кода.
Почему реализация IIR через Second-Order Sections (SOS) численно устойчивее чем прямая Transfer Function?
Ключевые идеи
- **Butterworth**: maximally flat passband (нет ряби); -3dB точно на fc; N*6 dB/octave спад; хуже спад при том же порядке чем Chebyshev
- **Chebyshev I/II и Elliptic**: рябь в passband/stopband/обоих; Elliptic - минимальный порядок для заданных specs; trade-off рябь vs крутизна спада
- **Bilinear transform**: аналоговый H(s) -> цифровой H(z); frequency warping корректируется pre-warping целевой частоты
- **Стабильность**: все |poles| < 1; квантование смещает полюса; SOS (каскад biquad) - стандарт для численной устойчивости
Связанные темы
IIR и FIR - два основных класса цифровых фильтров:
- FIR-фильтры — FIR: линейная фаза, безусловная стабильность - альтернатива IIR; выбор зависит от требований
- Z-преобразование — Z-плоскость полюсов и нулей - основа анализа стабильности и частотной характеристики IIR
Вопросы для размышления
- ЭКГ монитор работает 24/7 годами. IIR Butterworth 8-го порядка с fc=0.05 Гц при fs=500 Гц: полюса очень близко к |z|=1. Как гарантировать стабильность на всё время работы и как тестировать это при производстве прибора?
- Chebyshev Type I с рябью 0.1dB vs 1dB в passband: как это слышно в аудио приложении и как измерить порог слышимости ряби для конкретного типа контента?
- Guitar pedal использует Elliptic фильтр 4-го порядка. Гитарист хочет 'warm tone' - подчеркнуть 200-800 Гц. Как спроектировать bandpass IIR и почему Elliptic лучше Butterworth для этой задачи?