Групповая задержка КИХ фильтров

Все что касается фильтрации
Ivan Karamazov
Сообщения: 89
Зарегистрирован: 28 окт 2010, 22:31
Откуда: Москва

Групповая задержка КИХ фильтров

Сообщение Ivan Karamazov »

с удовольствием "доел" статью http://dsplib.ru/content/filters/linphase/linphase.html. Все замечательно, но есть ни то глобальное (мое) заблуждение, ни то -- там не очень все четко сказано. По моим (возможно, мифическим) представлениям, КИХ фильтр (вообще-то, мне больше мил термин "нерекурсивный", но его, кажется, отменили), имеющий линейную ФЧХ, обладает групповой задержкой, равной ровно половине порядка. Т.е. групповую задержку такого фильтра, соответственно, нужно мерить в отсчетах, и, в частности, если необходимо свести сигнал исходный + отфильтрованный, исходный сигнал подлежит задержке на N/2 отсчетов, а 1-е N/2 отсчетов от КИХ-фильтра д.б. отброшены (в предположении, что N-четное); при этом 0-й отсчет задержанного исходного сигнала будет соответствовать N/2-му отсчету сигнала отфильтрованного. (Причем, возможно, я опять устал, но N в моих рассуждениях здесь -- порядок фильтра, а число отсчетов ИХ при этом -- N+1 -- ну да, фильтр с одним коеффициэнтом ИХ (h[0]) -- умножение на константу, т.е. 0-го порядка<???> -- ну, это вопрос терминологии, хотя, конечно, для понимания тоже нуждается в "сведении". -- т.е. это, считаю, 2-й (отдельный) вопрос, причем "2-го порядка важности", тем не менее...)
Т.е. или я что-то глобально путаю, или статья нуждается в уточнении. Потому так если предлагаемое ("кастрюльное") правило правильно, его, на мой вкус, надо озвучить -- это очень облегчит жизнь многим юзерам КИХ. Если я неправ -- соотв. разъяснения избавят меня от моря ошибок.
Если ваши решения вам нравятся -- это хорошие решения. И наоборот.

Аватара пользователя
Бахурин Сергей
Администратор
Сообщения: 1114
Зарегистрирован: 05 окт 2010, 19:55
Контактная информация:

Re: Групповая задержка КИХ фильтров

Сообщение Бахурин Сергей »

Да похоже я увлекся. Порядок цифрового фильтра (БИХ или КИХ неважно) равен числу линий задержек. Поэтому вы правы, в статье надо сказать что порядок фильтра N-1, а не N.
По моим (возможно, мифическим) представлениям, КИХ фильтр (вообще-то, мне больше мил термин "нерекурсивный", но его, кажется, отменили), имеющий линейную ФЧХ, обладает групповой задержкой, равной ровно половине порядка
да именно поэтому выход КИХ фильтра нечетного порядка (с четным количеством к-тов) всегда на полотсчета сдвинут относительно входного сигнала.
ну да, фильтр с одним коеффициэнтом ИХ (h[0]) -- умножение на константу, т.е. 0-го порядка<???> -- ну, это вопрос терминологии, хотя, конечно, для понимания тоже нуждается в "сведении". -- т.е. это, считаю, 2-й (отдельный) вопрос, причем "2-го порядка важности", тем не менее...)

"Фильтр" у которого только один к-т h(0) не является фильтром, поскольку не имеет линий задержек. Это просто умножитель на h(0), и понятие порядка к нему неприменимо.

PS "КИХ фильтр" писать короче чем "нерекурсивный фильтр", к тому же, такая аббревиатура отлично сочетается с англоязычной FIR filter, поэтому в условиях глобализации нерекурсивный фильтр все чаще становиться КИХ фильтром. :)

Аватара пользователя
Santik
Сообщения: 609
Зарегистрирован: 28 дек 2010, 08:04
Откуда: Мирный (Якутия)
Контактная информация:

Re: Групповая задержка КИХ фильтров

Сообщение Santik »

http://www.dsplib.ru/content/filters/li ... phase.html
Поскольку БИХ фильтры не обладают свойствами симметрии импульсной характеристики и не могут иметь линейную ФЧХ.
Однако существуют фильтры с нулевым фазовым сдвигом (каскадные фильтры). В геофизике широко применяются полосовые фильтры Баттерворта с нулевой фазовой характеристикой.
Данные фильтруются рекурсивным фильтром, затем результат фильтрации реверсируется и снова пропускается через тот же фильтр. Выходной вектор реверсируется еще раз, что приводит в итоге к несмещенным по фазе данным.
Так как сигнал фильтруется дважды, АЧХ = |Y|**2 т.е. крутизна среза увеличивается.

Аватара пользователя
Бахурин Сергей
Администратор
Сообщения: 1114
Зарегистрирован: 05 окт 2010, 19:55
Контактная информация:

Re: Групповая задержка КИХ фильтров

Сообщение Бахурин Сергей »

чтобы реверсировать результат фильтрации надо сначала все данные принять и где-то сохранить, а уже потом реверсировать. А это уже физически не реализуемый фильтр, поскольку входных данных может оказаться бесконечное число. Фильтры с нулевой групповой задержкой физически не реализуемые, ибо они инерционны (поскольку стоят линии задержки), но должны дать отклик в момент прихода сигнала, чего они из за инерционности не могут сделать. Вы можете для фиксированной выборки скомпенсировать задержку при фильтрации тем или иным способом, но говорить что она нулевая не можете. Кроме того в случае БИХ фильтра скомпенсировать эту задержку невозможно, поскольку разые частоты приобретают разную задержку из-за нелинейности ФЧХ.

Аватара пользователя
Santik
Сообщения: 609
Зарегистрирован: 28 дек 2010, 08:04
Откуда: Мирный (Якутия)
Контактная информация:

Re: Групповая задержка КИХ фильтров

Сообщение Santik »

чтобы реверсировать результат фильтрации надо сначала все данные принять и где-то сохранить
Ну на флэшке, например :D
Фильтры с нулевой групповой задержкой физически не реализуемые, ибо они инерционны
Ну еще можно сказать:Фильтры с нулевой групповой задержкой физически не реализуемые, ибо время не может течь в обратном направлении! :shock:

Любой фильтр, в том числе и БИХ не знает в каком направлении (по времени) поступают данные. Задержка будет нелинейна Z(f), но при фильтрации реверсированного сигнала она поменяет знак -Z(f).

Аватара пользователя
Бахурин Сергей
Администратор
Сообщения: 1114
Зарегистрирован: 05 окт 2010, 19:55
Контактная информация:

Re: Групповая задержка КИХ фильтров

Сообщение Бахурин Сергей »

Покажите мне передаточную характеристику фильтра с нулевой групповой задержкой. Прямо запишите:


тогда можно о чем-то говорить. Все ваши схемы компенсации задержки подразумевают, что вы получили все отсчеты потом что-то с ними делаете. Т.о. при обработке первого отсчета вы уже знаете последний, что невозможно при обработке в реальном времени при поступлении первого отсчета и это соответствует членам в передаточной характеристике , т.е. не задержке сигнала, а скорее его предсказателю.

Аватара пользователя
Santik
Сообщения: 609
Зарегистрирован: 28 дек 2010, 08:04
Откуда: Мирный (Якутия)
Контактная информация:

Re: Групповая задержка КИХ фильтров

Сообщение Santik »

Покажите мне передаточную характеристику фильтра с нулевой групповой задержкой.
Я не спорю - такого фильтра в реальном времени не существует...Все данные должны быть получены до начала "реверсивной" фильтрации.
Пусть мы имеем звуковой файл Т=1 час, отфильтрованый БИХ фильтром в реальном времени. Проиграв его "задом наперед" и пропустив через тот же фильтр избавимся от сдвига фазы, зависящего от частоты

Аватара пользователя
Бахурин Сергей
Администратор
Сообщения: 1114
Зарегистрирован: 05 окт 2010, 19:55
Контактная информация:

Re: Групповая задержка КИХ фильтров

Сообщение Бахурин Сергей »

т.е. итог можно подвести такой:
1. Не бывает физически-реализуемых бих фильтров с линейной ФЧХ
2. Не бывает физически-реализуемых фильтров с нулевой ФЧХ
3. В частном случае, имея весь набор данных для анализа можно обеспечить обработку с компенсацией задержки при фильтрации как ких, так и бих фильтром. Последний тезис про бих фильтры я постараюсь проверить.

Аватара пользователя
Santik
Сообщения: 609
Зарегистрирован: 28 дек 2010, 08:04
Откуда: Мирный (Якутия)
Контактная информация:

Re: Групповая задержка КИХ фильтров

Сообщение Santik »

Да, итог печальный...
Не бывает физически-реализуемых фильтров с нулевой ФЧХ
И окружность нарисовать - физически-нереализуемый процесс - невозможно замкнутую кривую нарисовать с неизвестной длиной!
"Физически-реализуемый" - довольно расплывчатый термин по-моему...
Пусть я имею звуковой файл f(i)=a1,a2,....aN длительностью Т= 1 час, который пропускаю через фильтр порядка 2N. Это конечно не совсем удобно - через 2 часа получить первую выборку, но почему Вы считаете такой фильтр физически нереализуемым?

Аватара пользователя
Бахурин Сергей
Администратор
Сообщения: 1114
Зарегистрирован: 05 окт 2010, 19:55
Контактная информация:

Re: Групповая задержка КИХ фильтров

Сообщение Бахурин Сергей »

Пусть я имею звуковой файл f(i)=a1,a2,....aN длительностью Т= 1 час, который пропускаю через фильтр порядка 2N. Это конечно не совсем удобно - через 2 часа получить первую выборку, но почему Вы считаете такой фильтр физически нереализуемым?
Еще раз повторяю реакция физически реализуемого фильтра выходит всегда позже воздействия. Если вам для формирования реакции в момент t0 нужны значения сигнала в момент t1>t0, то такой фильтр физически не реализуем, поскольку его импульсная характеристика залезает в отрицательное время. Ваш пример - пример физически реализуемого устройства, поскольку формирование первого отсчета на выходе происходит после того как вы приняли последний отсчет, т.е. отклик вашего фильтра на воздействие первого отсчета записи вы получите все равно не раньше чем примите всю запись (т.е. не раньше чем через час). Но говорить о нулевой групповой задержке не приходится ибо задержка минимум час. Это первое. Второй вопрос как вы будете действовать, если вам не известен конец записи? Допустим отсчеты идут непрерывно. Если вы поставите обычный фильтр, то в нем есть несколько линий задержки и вы можете фильтровать сигнал в принципе бесконечно. Но ваш фильтр тогда становится не реализуемым, поскольку вы будете бесконечно ждать, когда закончатся отсчеты, а они не закончатся никогда.

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

Ответить