От идеального отклика к практическому фильтру
Хэмминг представил четырёхшаговый метод проектирования FIR-фильтров с использованием рядов Фурье.
Шаг 1: Укажите идеальный отклик
Определите H_ideal(f): именно ту частотную характеристику, которую вы хотите. Для фильтра нижних частот: H = 1 для f < f_c, H = 0 для f > f_c. Это функция-ступень в частотной области.
Шаг 2: Вычислите коэффициенты Фурье
Разложите H_ideal(f) в ряд Фурье по переменной частоты. Коэффициенты c_k — это значения импульсной характеристики фильтра:
c_k = ∫₀¹ H_ideal(f) · e^{i2πfk} df
Для фильтра нижних частот с частотой среза f_c: c_k = sin(2πf_c·k) / (πk) при k ≠ 0, c_0 = 2f_c.
Эта импульсная характеристика бесконечна — функция sinc простирается вечно во времени. Практический фильтр требует конечное количество коэффициентов.
Шаг 3: Усеките до 2N+1 членов
Оставьте только коэффициенты c_k для |k| ≤ N. Эта прямоугольная окна из 2N+1 членов — самое простое усечение. Оно производит феномен Гиббса: ≈9% перебросок вблизи частоты среза.
Шаг 4: Примените окно
Умножьте усечённые коэффициенты на оконную функцию w_k для уменьшения перебросков Гиббса:
c̃_k = c_k · w_k
Оконные коэффициенты c̃_k определяют практический фильтр.
Вычисление коэффициентов Фурье
Формула коэффициента Фурье c_k = sin(2πf_c·k) / (πk) для фильтра нижних частот с частотой среза f_c даёт импульсную характеристику.
Для полосового фильтра с нижней частотой среза f_l и верхней частотой среза f_u коэффициент Фурье идеального отклика равен: c_k = [sin(2πf_u·k) − sin(2πf_l·k)] / (πk).
Как окна уменьшают перебросок Гиббса
Оконная функция w_k сужает усечённую последовательность коэффициентов от центрального значения к нулю на краях. Сужение удаляет острые края, введённые прямоугольным усечением.
Почему сужение работает
Перебросок Гиббса возникает потому, что преобразование Фурье прямоугольного окна (функция sinc) имеет большие боковые лепестки. Эти боковые лепестки добавляются вместе вблизи разрыва, создавая ≈9% перебросок.
Гладкое окно имеет преобразование Фурье с меньшими боковыми лепестками. Умножение коэффициентов на окно свёртывает идеальный частотный отклик с преобразованием Фурье окна. Меньшие боковые лепестки → меньше пульсаций.
Распространённые окна
Прямоугольное (без окна): боковые лепестки ≈ −13 дБ, Гиббс ≈ 9%.
Ханна (фон Ханн): w_k = 0.5 + 0.5·cos(πk/N). Боковые лепестки ≈ −31 дБ.
Хэмминга: w_k = 0.54 + 0.46·cos(πk/N). Боковые лепестки ≈ −41 дБ, первый боковой лепесток ≈ −43 дБ. Гиббс < 0.2%.
Кайзера: w_k = I₀(α·√(1−(k/N)²)) / I₀(α). Настраиваемо: α управляет уровнем боковых лепестков, позволяя дизайну торговать высотой боковых лепестков на ширину переходной полосы.
Компромисс окна
Каждое окно налагает компромисс: подавление боковых лепестков всегда расширяет главный лепесток.
Более широкий главный лепесток означает более широкую переходную полосу — диапазон частот между полосой пропускания и полосой подавления.
Хэмминг формализовал это в терминах параметров дизайна Кайзера:
- δ: допустимая пульсация (вертикальный допуск от идеала — насколько отклик может отклониться от 0 или 1)
- ΔF: ширина переходной полосы (горизонтальный допуск — насколько узка переходная полоса от пропускания к подавлению)
Метод Кайзера находит как N (количество коэффициентов), так и α (параметр формы окна) только из δ и ΔF. Никаких угадываний типа окна.
От спецификаций к коэффициентам
Метод Кайзера берёт две спецификации — δ (допуск на пульсацию) и ΔF (ширина переходной полосы) — и производит как N, так и коэффициенты окна без метода проб и ошибок.
Последовательность дизайна
1. Вычислите A = −20·log₁₀(δ) (ослабление в дБ)
2. Вычислите параметр формы α:
- Если A > 50: α = 0.1102·(A − 8.7)
- Если 21 ≤ A ≤ 50: α = 0.5842·(A − 21)^{0.4} + 0.07886·(A − 21)
- Если A < 21: α = 0 (прямоугольное окно)
3. Вычислите N = (A − 8) / (2.285 · 2πΔF)
4. Вычислите веса окна Кайзера: w_k = I₀(α·√(1−(k/N)²)) / I₀(α)
5. Умножьте идеальные коэффициенты Фурье на веса окна
6. Оцените результирующую передаточную функцию и проверьте пульсацию на δ. Если пульсация превышает δ (интерференция на краях), повторите с меньшим допуском.
Хэмминг отметил: Кайзер пришёл к показателю степени 0.4, пробуя 0.5 (слишком большой) и обнаружив, что 0.4 хорошо подходит. Компьютер служил экспериментальным инструментом для теоретических исследований.
Применение метода Кайзера
Функция Бесселя I₀(x) появляется в формуле окна Кайзера. Она вычисляется как быстро сходящийся ряд:
I₀(x) = Σ_{m=0}^∞ [(x/2)^m / m!]²
Для малых x ряд сходится за несколько членов из-за m!² в знаменателе.