КИХ фильтр внутри resample

Все что касается фильтрации
zigzag
Сообщения: 24
Зарегистрирован: 05 авг 2019, 11:05

КИХ фильтр внутри resample

Сообщение zigzag »

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

Использую функцию resample(x, p, q, n) для уменьшения частоты в 3/5 раза. Почему фильтр, который там генерируется имеет порядок, в данном случае 2*n*5? Причем каждый 5-ый отсчет ИХ опять же нулевой, ИХ начинается и заканчивается нулем и при изменении n удаляется/добавляется по одной "волне" ИХ с каждой стороны.

Как я понимаю, здесь уже нет необходимости не изменять входные данные, потому что частота среза смещается вниз (частота дискретизации уменьшается) да и не получается так всё равно с нулевым каждым пятым отсчетом. Просто так удобнее? или АЧХ равномернее?

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

Re: КИХ фильтр внутри resample

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

я так понимаю речь о функции resample пакета матлаб? То там должно быть два фильтра: один для интерполяции, второй для децимации. Хотя могу ошибиться, т.к. сам не копался во внутренностях этой функции.

zigzag
Сообщения: 24
Зарегистрирован: 05 авг 2019, 11:05

Re: КИХ фильтр внутри resample

Сообщение zigzag »

Да, речь про нее. Но при правильной организации вычислений эти фильтры оказываются стоящими друг за другом и поэтому их заменяют на один (тот у которого частота среза ниже).

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

Re: КИХ фильтр внутри resample

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

просто получается, что тот фильтр в функции resample оказывается с той же частотой среза, что и фильтр который вы использовали бы для интерполяции в 5 раз. Что заначит 3/5 ? Это значит в 3 раза интерполяция и в 5 раз децимация. Вот для 5 раз децимации и требуется этот фильтр, у которого каждый 5 отсчет импульсной характеристики равен 0. Я думаю просто так совпало.

kaa
Сообщения: 40
Зарегистрирован: 17 мар 2019, 20:03

Re: КИХ фильтр внутри resample

Сообщение kaa »

resample(x, p, q, n) генерирует фильтр, а дальше вызывается
% ---- HERE'S THE CALL TO UPFIRDN ----------------------------
y = upfirdn(x,h,p,q);
которой не важны частотные характеристики фильтра.
Порядок выбирается достаточно произвольно, в справке написано, что увеличение n дает лучшую точность и большее время вычислений.

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

Re: КИХ фильтр внутри resample

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

Параметр h функции upfirdn и есть сгенерированный фильтр. Сама функция лишь эффективная прлифазная реализация рсамплера с заданным фильтром. Поскольку при ресамплинге 3/5 нужен фильтр с частотой среза 1/5 то и генерируется фильтр у которого каждый 5 отсчёт импульсной характеристики 0.

kaa
Сообщения: 40
Зарегистрирован: 17 мар 2019, 20:03

Re: КИХ фильтр внутри resample

Сообщение kaa »

фильтр с частотой среза 1/5 то и генерируется фильтр у которого каждый 5 отсчёт импульсной характеристики 0
Не обязательно же, можно сформировать и другой фильтр с такой частотой среза, у которого не будет такого количества нулей в ИХ. Эффективность реализации от этого не снизится.

zigzag
Сообщения: 24
Зарегистрирован: 05 авг 2019, 11:05

Re: КИХ фильтр внутри resample

Сообщение zigzag »

Бахурин Сергей писал(а):
05 авг 2019, 13:33
Поскольку при ресамплинге 3/5 нужен фильтр с частотой среза 1/5 то и генерируется фильтр у которого каждый 5 отсчёт импульсной характеристики 0.
Да, получается это и есть ответ. Если порядок фильтра четный и то каждый 5-ый отсчет ИХ нулевой (при синтезе методом окон). Ну а то что порядок фильтра меняется скачкообразно в зависимости от параметра n, это уже частности. При использовании upfirdown можно взять фильтр любого порядка.

zigzag
Сообщения: 24
Зарегистрирован: 05 авг 2019, 11:05

Re: КИХ фильтр внутри resample

Сообщение zigzag »

Здесь не в тему топика, но чтобы не плодить спрошу:
В литературе обычно рекурсивный фильтр есть синоним БИХ фильтра.
В тоже время известно, что скользящее среднее (по сути КИХ фильтр с линейной ФЧХ) можно представить в рекурсивном виде (если отвлечься от неточности вычислений):



В z области формула выводится из суммы геометрической прогрессии.
Понятно, что это остался КИХ фильтр с линейной ФЧХ.
Получается не всё то БИХ, что рекурсивное? Где то написано подробно про это?

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

Re: КИХ фильтр внутри resample

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

Да не все рекурсивные структуры бих. Но приведённый пример или ещё можно вспомнить cic фильтры которые тоже имеют рекурсивную ветвь в виде интегратора, оставаясь при этом ких. Но надо понимать что это достигается только если полюс рекурсивной части компенсируется нулём. Такие фильтры потенциально неустойчивы и с ними надо работать, только если вы полностью понимаете что надо делать. Иначе отрубленные и прострелянные конечности в результате их использования почти наверняка можно предполагать

Ответить