Перейти к содержанию
    

Мат. аспекты дизайна IIRа второго порядка

У меня в проэкте используются банк фильтров 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 либо отгружаемый файл/книга) теоритическую подоплеку такого подхода и откуда берутся эти уравнения.

 

Спасибо, Саша

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Никто не знаком с этими вещами ?? Или не в нужный форум запостил ?

 

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

 

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

 

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

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

 

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

 

Спасибо за ответ, нет проблем.

Так и есть - банк из 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а второго порядка.

Вот и интересует теоретическа подоплека этих формул.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо за ответ, нет проблем.

Так и есть - банк из 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а второго порядка.

Вот и интересует теоретическа подоплека этих формул.

 

 

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

 

А формулы эти Вы можете и сами легко получить, если запишете передаточную ф-ю фильтра 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 к единице, тем более острым получается резонансный пик, но тем менее устойчивым становится фильтр, особенно это сказывается в случае вычислений с фиксированной точкой. В общем, я бы не стал использовать эти фильтры для построения банка фильтров, но это уже Вам решать:))).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

А формулы эти Вы можете и сами легко получить, если запишете передаточную ф-ю фильтра 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 к единице, тем более острым получается резонансный пик, но тем менее устойчивым становится фильтр, особенно это сказывается в случае вычислений с фиксированной точкой. В общем, я бы не стал использовать эти фильтры для построения банка фильтров, но это уже Вам решать:))).

 

Да, дейсвтительно, сейча просчитал на бумажке - так и есть.

Большое спасибо, просветили, век живи - век учись.. :)

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

 

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

Начнем реализовывать - - посмотрим....

 

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

 

Еще раз спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...