КИХ фильтр внутри resample
КИХ фильтр внутри resample
Всем здравствуйте!
Я понимаю почему в функции interp с фактором r генерируется КИХ фильтр, импульсная характеристика (ИХ) которого нулевая каждый r-ый отсчет. Чтобы исходные данные никак не менялись при интерполяции.
Использую функцию resample(x, p, q, n) для уменьшения частоты в 3/5 раза. Почему фильтр, который там генерируется имеет порядок, в данном случае 2*n*5? Причем каждый 5-ый отсчет ИХ опять же нулевой, ИХ начинается и заканчивается нулем и при изменении n удаляется/добавляется по одной "волне" ИХ с каждой стороны.
Как я понимаю, здесь уже нет необходимости не изменять входные данные, потому что частота среза смещается вниз (частота дискретизации уменьшается) да и не получается так всё равно с нулевым каждым пятым отсчетом. Просто так удобнее? или АЧХ равномернее?
Я понимаю почему в функции interp с фактором r генерируется КИХ фильтр, импульсная характеристика (ИХ) которого нулевая каждый r-ый отсчет. Чтобы исходные данные никак не менялись при интерполяции.
Использую функцию resample(x, p, q, n) для уменьшения частоты в 3/5 раза. Почему фильтр, который там генерируется имеет порядок, в данном случае 2*n*5? Причем каждый 5-ый отсчет ИХ опять же нулевой, ИХ начинается и заканчивается нулем и при изменении n удаляется/добавляется по одной "волне" ИХ с каждой стороны.
Как я понимаю, здесь уже нет необходимости не изменять входные данные, потому что частота среза смещается вниз (частота дискретизации уменьшается) да и не получается так всё равно с нулевым каждым пятым отсчетом. Просто так удобнее? или АЧХ равномернее?
- Бахурин Сергей
- Администратор
- Сообщения: 1114
- Зарегистрирован: 05 окт 2010, 19:55
- Контактная информация:
Re: КИХ фильтр внутри resample
я так понимаю речь о функции resample пакета матлаб? То там должно быть два фильтра: один для интерполяции, второй для децимации. Хотя могу ошибиться, т.к. сам не копался во внутренностях этой функции.
Re: КИХ фильтр внутри resample
Да, речь про нее. Но при правильной организации вычислений эти фильтры оказываются стоящими друг за другом и поэтому их заменяют на один (тот у которого частота среза ниже).
- Бахурин Сергей
- Администратор
- Сообщения: 1114
- Зарегистрирован: 05 окт 2010, 19:55
- Контактная информация:
Re: КИХ фильтр внутри resample
просто получается, что тот фильтр в функции resample оказывается с той же частотой среза, что и фильтр который вы использовали бы для интерполяции в 5 раз. Что заначит 3/5 ? Это значит в 3 раза интерполяция и в 5 раз децимация. Вот для 5 раз децимации и требуется этот фильтр, у которого каждый 5 отсчет импульсной характеристики равен 0. Я думаю просто так совпало.
Re: КИХ фильтр внутри resample
resample(x, p, q, n) генерирует фильтр, а дальше вызывается
% ---- HERE'S THE CALL TO UPFIRDN ----------------------------
y = upfirdn(x,h,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.
Re: КИХ фильтр внутри resample
Не обязательно же, можно сформировать и другой фильтр с такой частотой среза, у которого не будет такого количества нулей в ИХ. Эффективность реализации от этого не снизится.фильтр с частотой среза 1/5 то и генерируется фильтр у которого каждый 5 отсчёт импульсной характеристики 0
Re: КИХ фильтр внутри resample
Да, получается это и есть ответ. Если порядок фильтра четный и то каждый 5-ый отсчет ИХ нулевой (при синтезе методом окон). Ну а то что порядок фильтра меняется скачкообразно в зависимости от параметра n, это уже частности. При использовании upfirdown можно взять фильтр любого порядка.Бахурин Сергей писал(а): ↑05 авг 2019, 13:33Поскольку при ресамплинге 3/5 нужен фильтр с частотой среза 1/5 то и генерируется фильтр у которого каждый 5 отсчёт импульсной характеристики 0.
Re: КИХ фильтр внутри resample
Здесь не в тему топика, но чтобы не плодить спрошу:
В литературе обычно рекурсивный фильтр есть синоним БИХ фильтра.
В тоже время известно, что скользящее среднее (по сути КИХ фильтр с линейной ФЧХ) можно представить в рекурсивном виде (если отвлечься от неточности вычислений):
В z области формула выводится из суммы геометрической прогрессии.
Понятно, что это остался КИХ фильтр с линейной ФЧХ.
Получается не всё то БИХ, что рекурсивное? Где то написано подробно про это?
В литературе обычно рекурсивный фильтр есть синоним БИХ фильтра.
В тоже время известно, что скользящее среднее (по сути КИХ фильтр с линейной ФЧХ) можно представить в рекурсивном виде (если отвлечься от неточности вычислений):
В z области формула выводится из суммы геометрической прогрессии.
Понятно, что это остался КИХ фильтр с линейной ФЧХ.
Получается не всё то БИХ, что рекурсивное? Где то написано подробно про это?
- Бахурин Сергей
- Администратор
- Сообщения: 1114
- Зарегистрирован: 05 окт 2010, 19:55
- Контактная информация:
Re: КИХ фильтр внутри resample
Да не все рекурсивные структуры бих. Но приведённый пример или ещё можно вспомнить cic фильтры которые тоже имеют рекурсивную ветвь в виде интегратора, оставаясь при этом ких. Но надо понимать что это достигается только если полюс рекурсивной части компенсируется нулём. Такие фильтры потенциально неустойчивы и с ними надо работать, только если вы полностью понимаете что надо делать. Иначе отрубленные и прострелянные конечности в результате их использования почти наверняка можно предполагать