Цифровые нерекурсивные фильтры. Часть 2.

Эпиграф:«Asinus Buridani inter duo sinus cardinalis»

Существует огромное количество методик вычисления коэффициентов КИХ- фильтра. Посмотреть некоторые их них можно здесь или здесь. И всегда возникает вопрос: «А какую методику выбрать? Или тупо обратиться к МатЛабу?».
С одной из этих методик я и собираюсь вас подробно ознакомить. В этой части мы будем создавать КИХ — фильтры. Как говорится — «своими руками» (ну и немного — головой:-)!


Создадим идеальную передаточную характеристику ФНЧ H(z) со следующими параметрами:
Re{H(z)}=1 при -ws<w<ws, иначе Re{H(z)}=0
Im{H(z)}=0

Требования к виду H(z) минимальны. Главное, чтобы передаточная характеристика была симметрична относительно частоты w=0. Причем Re{H(z)} должна быть чётной функцией, а Im{H(z)} — нечётной, иначе после обратного преобразования Фурье мы получим не действительную, а комплексную функцию.
Сделав над собой нечеловеческое усилие, и вспомнив Матан, сделаем обратное преобразование Фурье для нашей H(z):


Окончательно:

Что такое h(t)? Это импульсная характеристика нашего фильтра. Или отклик фильтра на единичный входной импульс.
Если у нас на входе сигнал x(t), то получить выходной сигнал y(t) легко:где * обозначает операцию свёртки. Проводить свёртку во временной области — дело весьма накладное, поэтому свёртку обычно проводят в частотной области.
Перейдём к дискретному времени:
где Fs — частота среза фильтра, FN — частота Найквиста.
где sinc — кардинальный синус.
Формулы очень простые, я их в Excel рассчитал — вот случай Fs/FN=0.5:

Ну вот и всё — коэффициенты КИХ- фильтра рассчитаны! Единственный момент — крайне желательно, чтобы характеристика h[k] была симметричной относительно k=0. Для этого введём k=-1,-2,-3… и положим h[-k]=h[k]. Общее выражение для КИХ — фильтра:
Коэффициенты фильтра: B0=h[-k]; B1=h[-k+1]; B2=h[-k+2]+… Построим АЧХ полученного фильтра:

Если сравнить с фильтрами скользящего среднего, рассмотренных в Части 1. — то налицо существенные улучшения: появилось что-то похожее на полосу пропускания. К тому же теперь частота среза теперь не зависит от порядка фильтра. Да, на АЧХ присутствует сильная неравномерность, обусловленная эффектом Гиббса (уж очень мы «крутые» склоны мы «заказали» при проектировании :-), но к счастью с этим легко бороться применением сглаживающего окна.
Коэффициенты окна подходящего вида просто умножаются на коэффициенты Bi.
Тот же фильтр, после применения окна Ханна:
Давайте теперь посмотрим на передаточную характеристику фильтра H(z):
О, ужас! Она не имеет ничего общего с той, которую мы первоначально разработали!
В полосе пропускания Re{H(z)}=cos(x) Im{H(z)}=- sin(x). Но на АЧХ это не повлияло, т.к. сумма квадратов sin и cos всегда=1, да и на линейность ФЧХ тоже сильно не повлияло: Ф=arctg[-sin(x)/cos(x)]=-x
Так почему же так изменился вид H(z)? Всё дело в том, что мы «отзеркалили» коэффициенты h[k] относительно k=0. Это соответствует временному сдвигу h(t) на время t0. Теперь вспомним свойство преобразования Фурье задержанного во времени сигнала:
Именно множитель привёл к такому изменению H(z). Но это не повлияло на характеристики нашего фильтра!
В заключение приведём фазо-частотную характеристику фильтра:

Продолжение следует…
  • +6
  • 29 июня 2015, 16:34
  • Santik

Комментарии (13)

RSS свернуть / развернуть
Существует огромное количество методик вычисления коэффициентов БИХ-фильтра.
Наверное, все же КИХ-фильтра?
0
Ну в смысле: Существует огромное количество методик вычисления коэффициентов БИХ-фильтра, а количество методик вычисления коэффициентов КИХ -фильтра — вообще «зашкаливает»!:-)
0
Перенес все «фильтровые» статьи в блог о теории и расчетах.
0
Вопрос 1. А почему не сразу в блог «Осторожно, гавно!»???
Вопрос 2. Статьи спокойно себе лежали в «Персональных» и я лично считал, что их без поправок в «Коллективные» рановато отправлять, тем более я обещал убрать ненормативную лексику…
Как-то не очень хорошо получилось…
0
А почему не сразу в блог «Осторожно, гавно!»???
Это потребительский блог о некачественных товарах.

И зачем такая скромность!


После таких статей! — можно уже совершенно честно носить.

-4
Издеваться над пожилым человеком некрасиво. Как минимум.
Настоятельно рекомендую свои «художества» удалить!
0
Не обращайте на него внимания. Он тут постоянно чудит.
На таких как well-man2000 обижаться не принято.
+4
А что еще интереснее, он не издевается, а одобряет статьи.
+1
Лучше бы ругал… :-) Пользы было-бы больше.
0
«С такими поклонниками и хейтеров не надо»?)
+3


Хотел бы принести свои искренние извинения уважаемому Santik'у: Я ни в коем случае не имел и даже мысли оскорбить Вас, но к сожалению я стал весьма косноязычен, но самое главное — черств душевно — сказалось чрезмерное увлечение Луркой. Я просто хотел сказать, что этой серией статей Вы сразу вошли в узкий круг «уважаемых коллег», т.е. элиты этого сообщества (в отличии от меня, естественно, в самом лучшем/не_негативном смысле этого слова).
0
Ну тогда Вам, как почитателю Лурка, должны быть хорошо известны основные принципы элитного троллинга. :-)
+2
Как говоритЬся
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.