Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: IIR (БИХ) фильтры
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
phantom
Может кто видел литературу (статьи) где выведены формулы расчета коеффициентов (a0,a1..,b0,b1..) БИХ-фильтров Баттерворта Чебышева и Бесселя от частоты- (Для ФНЧ, ФВЧ, полосно-пропускающего, и полосно-задерживающего), хотя бы до 4-го порядка ? Поделитесь плз. 1111493779.gif
alexeyv
В матлабе их просто получить, есть специальный мастер. FDA Toll -> Filter design. Порядок любой (я обычно использую 6-го). Вручную не считаю - геморойно
phantom
Цитата(alexeyv @ Dec 16 2010, 13:24) *
В матлабе их просто получить, есть специальный мастер. FDA Toll -> Filter design. Порядок любой (я обычно использую 6-го). Вручную не считаю - геморойно

не, мне надо плавно изменять частоту в софтовом фильтре, поэтому матлаб и всякие сервисы не катят.
bahurin
Как рассчитывать фильтры написано на этом сайте. Еще могу порекомендовать книгу Лем аналоговые и цифровые фильтры в ней все очень подробно и с примерами
alexeyv
Позвольте полюбопытствовать:

1. На какой платформе хотите сие реализовать? PC? ARM? DSP?

2. Перерасчет коэфицентов фильтра будет не быстрым, поэтому как будете реализовывать плавность регулирования частоты?

3. Какой шаг и какой дапазон изменения частот?
phantom
На PC. Если использовать универсальные алгоритмы поиска коеффициентов, то конечно все будет медленно. Но если иметь готовые формулы - то наоборот. Я вывел формулы для Баттерворта ФНЧ ФВЧ 1 и 2 порядка, там просто: например для 1-го ФНЧ а0=w0/(1+w0), a1=a0, b1=(1-w0)/(1+w0) - все работает. Если не найду - придется вывести, просто думаю, нечего изобретать велосипед - это уже наверняка кто-то сделал до меня. Можно конечно пересчитать коефф. по программам и записать в массивы для диапазона 20Гц-20кГц с шагом 1Гц sm.gif , но это как-то тупо.
bahurin
Ну не знаю. Что-то как-то я не встречал нигде готовых формул для коэффициентов фильтров. Например матлаб и среды ему подобные исользуют билинейное преобразование для расчета бих фильтров и формулы частотных преобразований фильтров (фнч-фнч, фнч-фвч, фнч-пф и фнч-рф). Думаю, что вывести готовые формулы для коэффициентов фильтра 3-10 порядка будет уже проблемотично. Хотя отрицать ничего не могу.
TSerg
Для БИХ невысокого порядка вполне уместно использование билинейного преобразования - это если врукопашную.
В противном случае - алгоритм Ремеза, МНК и др.
thermit
Откуда - не помню.
Считает все фильтры, кроме бесселя.
phantom
Цитата(thermit @ Dec 17 2010, 13:51) *
Откуда - не помню.
Считает все фильтры, кроме бесселя.

Спасибо! Правда там вряд ли в риалтайме потянет. Но все равно спасибо, если софт рабочий!
thermit
Софт рабочий. Для реального времени - а оно надо, если подумать?
Хотя, для встроенного применения этот софт плохо подходит.

У меня где-то есть прямые выражения для к-ов баттерворта и чебышева фнч/фвч.
Надо искать...
PetrovichKR
Цитата
не, мне надо плавно изменять частоту в софтовом фильтре, поэтому матлаб и всякие сервисы не катят.

Я так понимаю, Вам нужно просто сделать перестройку по частоте без изменения характеристик самого фильтра (ширина полосы пропускания, неравномерность АЧХ и т. д.). Хочу предложить несколько нестандартное решение проблемы. Хотя с какой стороны посмотреть, может и вполне стандартное...
Мне представляется такое решение. Сам фильтр перестроить тяжело, так зачем перестраивать именно его? Можно входной сигнал умножать на синус нужной Вам частоты, получая преобразование частоты, а уже преобразованный сигнал фильтровать с помощью ФНЧ, у которого характеристики постоянные и никогда не будут меняться. А затем отфильтрованный сигнал обратно преобразовывать вверх, опять умножая на синус. Тем самым, перестраивая частоту синуса, мы добиваемся перестройки частоты всей такой системы.
Fast
Цитата(PetrovichKR @ Dec 24 2010, 00:34) *
.. А затем отфильтрованный сигнал обратно преобразовывать вверх, опять умножая на синус. Тем самым, перестраивая частоту синуса, мы добиваемся перестройки частоты всей такой системы.
а если по полосу надо изменять - интерполировать ?
phantom
Цитата(PetrovichKR @ Dec 24 2010, 00:34) *
Я так понимаю, Вам нужно просто сделать перестройку по частоте без изменения характеристик самого фильтра (ширина полосы пропускания, неравномерность АЧХ и т. д.). Хочу предложить несколько нестандартное решение проблемы. Хотя с какой стороны посмотреть, может и вполне стандартное...
Мне представляется такое решение. Сам фильтр перестроить тяжело, так зачем перестраивать именно его? Можно входной сигнал умножать на синус нужной Вам частоты, получая преобразование частоты, а уже преобразованный сигнал фильтровать с помощью ФНЧ, у которого характеристики постоянные и никогда не будут меняться. А затем отфильтрованный сигнал обратно преобразовывать вверх, опять умножая на синус. Тем самым, перестраивая частоту синуса, мы добиваемся перестройки частоты всей такой системы.

Вообще говоря надо все менять и частоту и добротность и усиление. Фактически это параметрический эквалайзер, и поскольку он для звуковых сигналов, то есть и весьма существенные требования к искажениям. Но можно Ваш метод попробовать на досуге. Сейчас я пробую решать эту задачу через диф.уравнения аналогового прототипа фильтра. Простым методом, который описан у Баскакова не получается - даже его пример из книги - фильтр разлетается. Но чис. методами посложнее получается нормально. Правда вычислительные затраты по сравнению с рекурсивными фильтрами несколько больше. Поэтому тема вопроса актуальна.sm.gif
thermit
Цитата
phantom:
Фактически это параметрический эквалайзер, и поскольку он для звуковых сигналов, то есть и весьма существенные требования к искажениям.


Дык, зачем велосипед изобретать? Есть типовые формулы расчета биквадратного звена для параметрического эквалайзера.
Задается полоса (добротность), усиление/ослабление и центральная частота.
8 таких звеньев позволяют сделать практически любую ачх.
TSerg
Можно попробовать секционировать фильтр, составив его из типовых звеньев второго порядка, расчет которых элементарен.

Еще можно посмотреть в сторону интерполированных КИХ-фильтров.
За счет включения M-элементов задержек удается получить узкую полосу при гораздо меньшей ( в 5..7 ) раз длине фильтра.
А прототип рассчитывать "оконным" методом, да хоть того же Кайзера, что довольно быстро.
phantom
Цитата(TSerg @ Dec 24 2010, 13:41) *
Можно попробовать секционировать фильтр, составив его из типовых звеньев второго порядка, расчет которых элементарен.

Ну так я собственно и хочу. Токо формулы лень выводить для разных типов фильтров. Все надеюсь что есть готовые sm.gif На дворе начало ХХI века, а эта тема должна была бы быть исчерпаной, уже к концу 60х sm.gif
Самурай
Цитата(phantom @ Dec 24 2010, 14:21) *
Ну так я собственно и хочу. Токо формулы лень выводить для разных типов фильтров. Все надеюсь что есть готовые sm.gif На дворе начало ХХI века, а эта тема должна была бы быть исчерпаной, уже к концу 60х sm.gif


Поставьте банк КИХ фильтров на 128, 256,...1024,...8192,... полосы и не мучайтесь. Сразу исчезнут проблемы с обеспечением устойчивости и не нужны будут никакие формулыsm.gif. Банк фильтров легко реализуется через БПФ. БПФ на 8192 точки для сигналов звукового диапазона потянет наверно любой современный PC в реальном времени без всяких проблем.
TSerg
Цитата(phantom @ Dec 24 2010, 14:21) *
Ну так я собственно и хочу. Токо формулы лень выводить для разных типов фильтров. Все надеюсь что есть готовые sm.gif На дворе начало ХХI века, а эта тема должна была бы быть исчерпаной, уже к концу 60х sm.gif


Эта тема неисчерпаема, как и Мир. sm.gif

Вам сюда за реализацией:
http://musicdsp.org/archive.php?classid=3#225
анатолий
Найдите статью
Regalia P.A., Mitra S.K. and Vaidyanathan P.P. The Digital All-Pass Filter: A Versatile Signal Processing Building Block // Proc. IEEE. 1988.V.76. №1. Р.1937.
Она же есть в переводе в ТИИЭР.
Там есть полосовые фильтры с формулами настройки по частоте и ширине,
есть фильтр - эквалайзер.
Фильтры замечательные тем, что не возбуждаются при любой комбинации коэффициентов.
phantom
Цитата(TSerg @ Dec 24 2010, 15:08) *
Эта тема неисчерпаема, как и Мир. sm.gif

Вам сюда за реализацией:
http://musicdsp.org/archive.php?classid=3#225

Ха-ха! Спасибо конечно, но я там давно был и неоднократно. И там такого нет. В смысле есть обрезанный код с МИТ-овской лицензией, но он вычисляет все прямым способом, для риалтайма не годящимся. А вот это уже слегка похоже на то, что надо: http://www.abvolt.com/research/publications2.htm, токо книгу "Digital Filters: Basics and Design"
Dietrich Schlichtharle, (народную) не могу нарыть. Насчет статьи "Regalia P.A., Mitra S.K. and Vaidyanathan P.P. The Digital All-Pass Filter: A Versatile Signal Processing Building Block", нашел - весьма интересна, но пока не совсем понятны механизмы реализации.
thermit
Цитата
И там такого нет.


Какого "такого"?

Параметрические эквалайзеры 2-го порядка в обозримом пространстве используются 2-х видов:

1 Регалии-митры (менее популярны)
2 Бристоу-джонсона (наиболее популярны)

Различаются определением полосы.

Вам-то что нужно?
TSerg
По ссылке
http://musicdsp.org/archive.php?classid=3#225
хотя бы Delphi Class implementation of the RBJ filters
чем не устраивает ?

Или Вы чего-то не договариваете sm.gif
phantom
Цитата(TSerg @ Dec 27 2010, 16:57) *
По ссылке
http://musicdsp.org/archive.php?classid=3#225
хотя бы Delphi Class implementation of the RBJ filters
чем не устраивает ?

Или Вы чего-то не договариваете sm.gif

А где там выбрать х-ку Баттерворта, Чебышева, Бесселя?
thermit
Цитата
phantom:
А где там выбрать х-ку Баттерворта, Чебышева, Бесселя?


Нигде. Баттерворт, чебышев 1/2 ,бессель, эллиптический это все способы аппроксимации чх стандартных типов, т е

фнч фвч пф рф.

Эквалайзер не относится к стандартному типу фильтров. Вам что надо?
TSerg
Цитата(phantom @ Dec 28 2010, 12:42) *
А где там выбрать х-ку Баттерворта, Чебышева, Бесселя?


Если честно, то после прохождения сигнала через узкополосные БИХ-фильтры, Вы маму родную не узнаете sm.gif
Я за КИХ-варианты.
phantom
А мне надо стандартные типы фильтров, только и всего. "Эквалайзер не относится к стандартному типу фильтров. " - если их не всегда делают такими, то это еще ничего не значит... Иногда все же делают. sm.gif
thermit
Цитата
phantom:
А мне надо стандартные типы фильтров, только и всего.


Тада эквалайзеры (по-научному - корректоры ачх - фильтр с произвольной ачх, синтезируется только методом оптимизации) тут при чем?

Цитата
если их не всегда делают такими, то это еще ничего не значит... Иногда все же делают.


Дауш... (ц)

анатолий
Цитата(phantom @ Dec 24 2010, 17:37) *
Насчет статьи "Regalia P.A., Mitra S.K. and Vaidyanathan P.P. The Digital All-Pass Filter: A Versatile Signal Processing Building Block", нашел - весьма интересна, но пока не совсем понятны механизмы реализации.


Фазовый фильтр имеет модуль передаточной функции H(z), равный |H(z)| = 1. Его ФЧХ на частоте fR имеет фазовый сдвиг, равный 180°.
Если складываются сигналы от двух фазовых фильтров, выходной сигнал подавляется на частотах, для которых разность фаз равна 180°.
Результирующая передаточная функция:
HS = (H1(z) ± H2(z))/2,
соответствует различным фильтрам ФНЧ,ФВЧ, полосовому или режекторному фильтру в зависимости знака суммирования (ФНЧ или ФВЧ) и от порядка фазовых фильтров.
Так, если H1(z) -фазовое звено 2-го порядка, а H2(z)=1, и вычесть их выходы, то на всех частотах, кроме fR, результат будет нулевой,
а на частоте fR - он усилится в 2 раза.

Передаточная функция фазового фильтра 2-го порядка равна:

H1(z)= (a+b(1+a)Z^-1 +Z^-2)/ (aZ^-2+b(1+a)Z^-1 +1),

где b = cos(2πfR) – регулирует частоту среза fR, a = (1-t)/(1+t) - задает ширину полосы пропускания Δf, t = tg(πΔf).
Таким образом, изменяя b , центральная частота пропускания регулируется в пределах (0,05 - 0,45) fsampling с подавлением в полосе задержания до 50 дб.

Аппаратная реализация фильтра на VHDL описана в книжке А.Сергиенко "VHDL для...".
phantom
Цитата(thermit @ Dec 28 2010, 23:47) *
Тада эквалайзеры (по-научному - корректоры ачх - фильтр с произвольной ачх, синтезируется только методом оптимизации) тут при чем?



Дауш... (ц)

Не превращайте тему во флейм. В названии абсолютно четко указано, что мне надо, и другие разные способы (КИХ, формулы из аудиокукбукс и тд ) меня не устраивают.
TSerg
Так ведь никто не мешает идти своей дорогой.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.