Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Мат. аспекты дизайна IIRа второго порядка
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Вопросы системного уровня проектирования
Саша Z
У меня в проэкте используются банк фильтров IIR второго порядка без нулей (только 2 real полюса).
В универе изучали классическую теорию дизайна IIRов согласно теории изложенной в A Course in Digital Signal Processing by Boaz Porat, т.е. при данных требуемых тех. параметрах (частоты, ripple и т.д.), подсчет требуемого порядка фильтра, расчет вспомогательных параметров (d,k), выбор или подсчет средней частоты среза, расчет полюсов и расчет transfer function. Все это для LPF. Затем, ежели нужен не LPF, то делаем трансформацию в требуемый вид (HPF, BPF, BSF). После чего делаем трансформацию полученного фильтра в цифровой domain (обычно с помощью bilinear transform, с учетеом требуемого пересчета частот) вследствии чего и получаем искомую transfer function цифрового фильтра (в z-domain).

Однако, мой руководитель проэкта (старых правил DSPшник с многолетним советским и частично пост-советским стажем) преложил очень простой вариант - для band-pass второго порядка IIR без нулей.

Первый полюс рассчитывается по формуле:
P1 = 2 x Q x cos[(2 x pi x fres)/fs];
второй полюс:
P2 = -Q^2.
где Q - требуемая добротность фильтра (в пределах 0.9 - 0.99999...)
fres - частота середины полосы пропускания (так как задана в обычно частотной шкале (Hz) без учете свертки на цифре)
fs - sampling rate

Мне этот подход не знаком, никогда не дидел таких формул и соотв. теории.

Буду благодарен ежели кто подскажет где почитать (ессно online либо отгружаемый файл/книга) теоритическую подоплеку такого подхода и откуда берутся эти уравнения.

Спасибо, Саша
Саша Z
Никто не в курсе ?
Саша Z
Никто не знаком с этими вещами ?? Или не в нужный форум запостил ?
Самурай
Цитата(Саша Z @ Apr 30 2007, 16:41) *
Никто не знаком с этими вещами ?? Или не в нужный форум запостил ?


Возможно я ошибаюсь, но есть подозрение, что или Вы не так поняли руководителя проэкта, или он Вас не так понялsmile.gif. Или Вы случайно позабыли упомянуть в своем вопросе некоторые несущественные детали, отсутствие которых, тем не менее, весьма пагубно отразилось на попытке логического осмысления поставленного вопросаsmile.gif)).

Собственно, что например значит "банк фильтров IIR второго порядка без нулей (только 2 real полюса)."? Что в этой фразе понимается под "real" полюсами? Полюса лежащие только на действительной оси? Но тогда о каких band-pass фильтрах может идти речь?

И что это за формулы для расчета полюсов? Полюс описывается только одной координатой в некоторых частных случаях: а именно когда он лежит либо на мнимой оси либо на действительной оси. Но даже в этом случае приведенная формула для P1 может дать значение больше 1, т.е. данный полюс приведет к неустойчивости фильтраsmile.gif. Да и fres в этой формуле мало повлияет на АЧХ фильтраsmile.gif.

В общем, опишите Вашу задачу более корректнее и точнее. Еще лучше, если Вы приведете уравнение Вашего фильтра, дабы разговор был осмысленнееsmile.gif).
Саша Z
Цитата(Самурай @ Apr 30 2007, 21:41) *
Возможно я ошибаюсь, но есть подозрение, что или Вы не так поняли руководителя проэкта, или он Вас не так понялsmile.gif. Или Вы случайно позабыли упомянуть в своем вопросе некоторые несущественные детали, отсутствие которых, тем не менее, весьма пагубно отразилось на попытке логического осмысления поставленного вопросаsmile.gif)).

Собственно, что например значит "банк фильтров IIR второго порядка без нулей (только 2 real полюса)."? Что в этой фразе понимается под "real" полюсами? Полюса лежащие только на действительной оси? Но тогда о каких band-pass фильтрах может идти речь?

И что это за формулы для расчета полюсов? Полюс описывается только одной координатой в некоторых частных случаях: а именно когда он лежит либо на мнимой оси либо на действительной оси. Но даже в этом случае приведенная формула для P1 может дать значение больше 1, т.е. данный полюс приведет к неустойчивости фильтраsmile.gif. Да и fres в этой формуле мало повлияет на АЧХ фильтраsmile.gif.

В общем, опишите Вашу задачу более корректнее и точнее. Еще лучше, если Вы приведете уравнение Вашего фильтра, дабы разговор был осмысленнееsmile.gif).


Спасибо за ответ, нет проблем.
Так и есть - банк из IIR фильтров, каждый фильтр - второго порядка, имеет вид:

H(z) = 1/(1-p1*z^-1-p2*z^-2) - то бишь без нулей.
Извиняюсь, обмолвился:
p1, p2 - не полюса, а коеффициенты задержек в знаменателе. Для получения полюсов нужно H(z) разложить на простые дроби - и тогда действительно получим комплексные полюса.

p1, p2 (т.е. коеффициенты задержек, а не полюса) вычисляются по формулам данным в моем первичном посте в ветке.
По теории, p1 может принимать значения |p1| < 2 при том что |p2| < 1 - это залог устойчивости.
fres - требуемый пик frequency response (АЧХ ?) полосового фильтра.

Что-бы ни быть голословным, приведу конкретный пример одного из этих IIRов собранных в filter bank:
fres = 1206 Hz - середина требуемой полосы пропускания
fs = 22050 Hz - sampling rate
выбираем Q = 0.985;

p1 = 2*Q*cos(2*pi*fres/fs) = 2*0.985*cos(2*pi*1206/22050) = 1.8548
p2 = -Q^2 = -(0.985)^2 = -0.9072;

Получаем фильтр:
H(z) = 1/(1-1.8548*z^-1+0.9072*z^-2)

Если вы прогоните данный IIR в матлабе на получение frequency response (freqz, например) - получим острый полосовой фильтр с усилением 40 дБ в центре (я его потом срезаю соотв. коеффициентом в числителе функции).

Т.е. такой подход дает сразу коеффициенты IIRа второго порядка.
Вот и интересует теоретическа подоплека этих формул.
Самурай
Цитата(Саша Z @ Apr 30 2007, 23:32) *
Спасибо за ответ, нет проблем.
Так и есть - банк из IIR фильтров, каждый фильтр - второго порядка, имеет вид:

H(z) = 1/(1-p1*z^-1-p2*z^-2) - то бишь без нулей.
Извиняюсь, обмолвился:
p1, p2 - не полюса, а коеффициенты задержек в знаменателе. Для получения полюсов нужно H(z) разложить на простые дроби - и тогда действительно получим комплексные полюса.

p1, p2 (т.е. коеффициенты задержек, а не полюса) вычисляются по формулам данным в моем первичном посте в ветке.
По теории, p1 может принимать значения |p1| < 2 при том что |p2| < 1 - это залог устойчивости.
fres - требуемый пик frequency response (АЧХ ?) полосового фильтра.

Что-бы ни быть голословным, приведу конкретный пример одного из этих IIRов собранных в filter bank:
fres = 1206 Hz - середина требуемой полосы пропускания
fs = 22050 Hz - sampling rate
выбираем Q = 0.985;

p1 = 2*Q*cos(2*pi*fres/fs) = 2*0.985*cos(2*pi*1206/22050) = 1.8548
p2 = -Q^2 = -(0.985)^2 = -0.9072;

Получаем фильтр:
H(z) = 1/(1-1.8548*z^-1+0.9072*z^-2)

Если вы прогоните данный IIR в матлабе на получение frequency response (freqz, например) - получим острый полосовой фильтр с усилением 40 дБ в центре (я его потом срезаю соотв. коеффициентом в числителе функции).

Т.е. такой подход дает сразу коеффициенты IIRа второго порядка.
Вот и интересует теоретическа подоплека этих формул.



Боюсь Вас разочаровать, но ни какой особенной подоплеки в этих формулах нетsmile.gif. И особенной теории тожеsmile.gif. Точнее, теория есть, но это базовая теория.

А формулы эти Вы можете и сами легко получить, если запишете передаточную ф-ю фильтра 2-ого порядка с действительными коэффициентами в виде произведения простейших множителей 1-ого порядка:

H(z) = 1/[(1 - r*e^jw * z^-1)(1 - r*e^-jw * z^-1)] = 1/(1 - 2*r*cos(w)*z^-1 + r^2*z^-2)

Это уравнение обычного цифрового резонатора 2-ого порядка с двумя комплексно-сопряженными полюсами. Угол w и радиус r (он же добротность Q) задают положение полюсов на комплексной плоскости. Чем ближе r к единице, тем более острым получается резонансный пик, но тем менее устойчивым становится фильтр, особенно это сказывается в случае вычислений с фиксированной точкой. В общем, я бы не стал использовать эти фильтры для построения банка фильтров, но это уже Вам решатьsmile.gif)).
Саша Z
Цитата(Самурай @ May 1 2007, 02:54) *
Боюсь Вас разочаровать, но ни какой особенной подоплеки в этих формулах нетsmile.gif. И особенной теории тожеsmile.gif. Точнее, теория есть, но это базовая теория.

А формулы эти Вы можете и сами легко получить, если запишете передаточную ф-ю фильтра 2-ого порядка с действительными коэффициентами в виде произведения простейших множителей 1-ого порядка:

H(z) = 1/[(1 - r*e^jw * z^-1)(1 - r*e^-jw * z^-1)] = 1/(1 - 2*r*cos(w)*z^-1 + r^2*z^-2)

Это уравнение обычного цифрового резонатора 2-ого порядка с двумя комплексно-сопряженными полюсами. Угол w и радиус r (он же добротность Q) задают положение полюсов на комплексной плоскости. Чем ближе r к единице, тем более острым получается резонансный пик, но тем менее устойчивым становится фильтр, особенно это сказывается в случае вычислений с фиксированной точкой. В общем, я бы не стал использовать эти фильтры для построения банка фильтров, но это уже Вам решатьsmile.gif)).


Да, дейсвтительно, сейча просчитал на бумажке - так и есть.
Большое спасибо, просветили, век живи - век учись.. smile.gif
Странно что в фундаментальных книгах по DSP сие простое действо не упоминается. Говориться конечно о разложении готовой transfer function на множители/дроби для получения полюсов/нулей, но не упоминается частный случай второго порядка нахождение коеффициентов напрямую этими формулами.

Именни таких 15 IIRов и использовал в банке, вместе с одним большим band-reject FIRом. В матлабе все работает как положено. Начинаю реализацию в fixed-point 16 бит тут действительно могут быть проблемы (например выбранный Q дает полюса весьма близкие к радиусу 1, в fixed-point 16 bit может "выбить" за пределы круга устойчивости ежели не предусмотреть спец. меры)
Начнем реализовывать - - посмотрим....

Кстати, я так понимаю можно в Матлабе просимулировать систему в fixed-point 16 bit, так ? Т.е. специально переводить коеффициенты/промеж. результаты и т.д. в такой формат и проверить насколько ожидаемое поведение системы в DSPшной реализации будет близко к теоретическому, а прав ?

Еще раз спасибо.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.