Рисунок 16-1 иллюстрирует идею оконного sinc фильтра. На рисунке (а) показан частотный отклик идеального низкочастотного фильтра. Все частоты ниже частоты отсечки fC проходят с той же амплитудой, все частоты выше - блокируются. Полоса пропускания совершенно плоская, подавление в полосе блокировки равно бесконечности, ширина перепада между ними бесконечно маленькая.
Взяв инверсное преобразование Фурье от этой идеальной частотной характеристики, получим идеальное ядро (импульсный отклик) фильтра, показанный на рисунке (b). Как обсуждалось ранее (смотри главу 11, формулу 11‑4), эта кривая получается из общей формы sin(x)/x, которая называется sinc функцией, и определяется выражением:
Свертка входного сигнала с этим ядром фильтра обеспечивает идеальный низкочастотный фильтр. Но проблема заключается в том, что sinc функция постирается от минус бесконечности до плюс бесконечности и нигде амплитуда не падает до нуля. Эта бесконечность не является проблемой для математики, но она непреодолима при компьютерных вычислениях.
Для преодоления этой проблемы, мы сделаем две модификации с функцией на рисунке (b), которые приведут нас к форме, показанной на рисунке (с). Первое, ограничим кривую М+1 точкам симметрично относительно главного лепестка, М – четное число. Все отсчеты вне этих М+1 точек установим в ноль или просто игнорируем. Второе, выбранную последовательность этих точек сдвинем вправо так, что бы номера точек менялись от 0 до М; это позволит представлять ядро фильтра только положительной индексацией. Хотя многие языки программирования и допускают отрицательную индексацию, но требуют учета определенных нюансов при ее использовании. Единственный эффект от этого сдвига ядра на M/2 заключается в сдвиге выходного сигнала на ту же величину.
Так как модифицированное ядро это только приближение к идеальному ядру фильтра, то оно не будет иметь идеальной частотной характеристики. Для нахождения нового частотного отклика можно использовать преобразование Фурье сигнала (с); получим кривую, показанную в (d). Какая неприятность! В полосе пропускания чрезмерная рябь, плохое подавление в полосе блокировки (вызвано эффектом Гиббса, который обсуждался в главе 11). Эти проблемы вызваны резким нарушением непрерывности на концах усеченной sinc функции. Увеличение длины ядра фильтра не уменьшает эти проблемы; нарушение непрерывности играет существенную роль в независимости от выбранной длины М.
К счастью, имеется постой метод улучшения этой ситуации. Рисунок (е) показывает сглаженную на концах кривую, которая называется окно Блэкмана. Перемножив усеченную sinc функцию (с) на окно Блэкмана (е), получим ядро оконного sinc фильтра (f). Идея заключается в том, что бы уменьшить резкость перепада усеченных концов и, тем самым, улучшить частотный отклик. Рисунок (g) показывает результат этого улучшения. Полоса пропускания теперь плоская, полоса блокировки смотрится очень хорошо на этом графике.
ФОРМУЛА 16-1
Окно Хэмминга. Номера меняются от 0 до М. Всего точек М+1.
ФОРМУЛА 16-2
Окно Блэкмана.
Несколько различных окон имеется, большинство названы в честь их создателей в 1950 годах. Но только два из них имеет смысл использовать, окно Хэмминга и окно Блэкмана. Они описываются формулами:
w[i] = 0,54 – 0,46 cos(2pi/M)
w[i] = 0,42 –0,5 cos(2i/M) + 0,08 cos(4pi/M)
Рисунок 16-2а показывает форму этих двух окон для М=50 (всего в кривой 51 точка). Какое из этих двух окон лучше использовать? Это определяется компромиссом между параметрами. Как показано на рисунке 16-2b, окно Хэмминга имеет спад на 20% круче, чем окно Блэкмана. Однако в (с) показано, что окно Блэкмана имеет лучшее подавление в полосе блокировки. Что бы быть точными, подавление в полосе блокировки для окна Блэкмана составляет –74 дБ (~0,02%), а для окна Хэмминга только –53 дБ (~0,2%). Хотя этого и не видно из графика, окно Блэкмана имеет рябь в полосе пропускания только 0,02%, а окно Хэмминга обычно – 0,2%. В основном, окно Блэкмана предпочтительнее, так как крутизна спада легче регулируется, чем плохое подавление в полосе блокировки.
РИСУНОК 16-1
Получение ядра оконного sinc фильтра. Частотная характеристика идеального низкочастотного фильтра показана на рисунке (а) с соответствующим ядром (b), sinc функцией. Так как sinc функция бесконечно длинная, то она дожа быть укорочена, как показано в (с), для использования в компьютере. Однако это укорачивание приводит к нежелательным изменениям в частотной характеристике (d). Решение заключается в умножении усеченной sinc функции на сглаживающее окно (е), что дает ядро оконного sinc фильтра (f). Частотная характеристика оконного sinc фильтра сглажена и хорошо работает. Эти графики показаны не в масштабе.
РИСУНОК 16-2
Характеристики оконных фильтров Блэкмана и Хэмминга. Форма этих двух окон показана на рисунке (а), и определяются формулами 16-1 и 16-2. Как показано в (b), крутизна спада у фильтра Хэмминга на 20% круче, чем у фильтра Блэкмана. Однако окно Блэкмана имеет на 20% лучше коэффициент подавления в полосе блокировки (Блэкман – 0.02%, Хэмминг – 0,2%), и меньшую рябь в полосе пропускания (Блэкман – 0.02%, Хэмминг – 0,2%).
Имеются другие оконные фильтры, о которых вы можете услышать, хотя все они попадают в разряд фильтров Блэкмана и Хэмминга. Окно Бартлета имеет треугольную форму с заостренной вершиной из прямых линий. Окно Хэннинга, которое также называется окно с вытянутым косинусом (raised cosine window), описывается формулой: w[i]=0,5-0,5cos(2πi/M). Эти два оконных фильтра имеют ту же самую резкость спада, как и окно Хэмминга, но хуже подавление в полосе блокировки (Бартлет - -25 дБ или 5,6%, Хэннинг - -44 дБ или 0,63%). Вы можете также услышать о прямоугольном окне. Это даже и не окно, а усечение хвостов (как на рисунке 16-1с). Хотя резкость спада в -2,5 раза круче, чем у окна Блэкмана, подавление в полосе блокировки только -21 дБ (8,9%).