[an error occurred while processing this directive]
|
Эффект квантования коэффициентов в КИХ фильтрах можно описать следующим образом
Основная операция это домножение входных отсчетов x(i) на коэффициент b(k) и суммирование результатов. В идеале это выглядит так
x(i)*b(k)
НО! b(k) в чистом виде ты никогда не получешь. Ты получишь только квантованое приближение к b(k). Т.е. если err(k) - ошибка квантования к-того коэффициента, мы имеем:
x(i)*( b(k) + err(k) ) = x(i)*b(k) + x(i)*err(k)
Последний член x(i)*err(k) легко оценить. Это есть пролаз со входа на выход сигнала х. И его аплитуда может составлять до половины младшего разряда. Т.е. при шестнадцати битных коэффицинтах (знак + 15 бит) мы имеем уже до -96дБ.
Но такую гадость нам дает КАЖДЫЙ из твоих 164 битных коэффициентов. Т.е. имеем как бы параллельно приделаный паразитный фильтр 164-го порядка с коэффицинтами, кои есть ошибки квантования идиальных коэффициентов. Ну а АЧХ такого фильтра - вещь непредсказуемая. Но чем порядок фильтра больше, тем больше возникает пролазов в самых неожиданных местах.
Что касается твоего фильтра, то запустив filter design tool в Матлабе и включив там опцию квантования, ты увидишь пролазы до -70дБ. И -80дБ тебе не получить никакими оптимизациями.
вообще, проектировать фильтры с подавлением лучше -70дБ при 16-битной арифметике, настоятельно не рекомендуется.
Выхода два:
1. Использовать коэффициеты с большей разрядностью.
2. Использовать, допустим, двузвенные фильтры, где каждое звено давит в полосе задерживания децибел 50.
E-mail: info@telesys.ru