искажение синусоиды ких фильтром вне полосы пропускания

Все что касается фильтрации
Николай
Сообщения: 5
Зарегистрирован: 04 май 2019, 01:15

искажение синусоиды ких фильтром вне полосы пропускания

Сообщение Николай »

Если взять КИХ фильтр нижних частот и пропустить через него синусоиду с частотой, большей, чем
частота заграждения, то в некоторых случаях отклик фильтра будет уже не синусоидой. У меня ФНЧ отсекает частоты
выше 15 кГц при частоте дискретизации 256 кГц. Если взять синусоиду с частотой 125 кГц (меньше частоты Найквиста)
и посмотреть на отклик, то он похож на амплитудно-модулированную синусоиду, а в графике спектра появляются
ненулевые нижние частоты. Если же два раза применить такой фильтр к синусоиде 15 кГц(то есть на краю полосы пропускания) , то результат будет такой же. Такое впечатление, что при малом уровне сигнала КИХ фильтр значительно искажает синусоиду, хотя, в идеале, не должен. Ничего подобного не наблюдается, если частота синусоиды берется из полосы пропускания. Думаю, что это происходит из-за погрешности машинных вычислений. Есть ли какие-то другие объяснения этому явлению?

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

Re: искажение синусоиды ких фильтром вне полосы пропускания

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

КИХ фильтр не может делать этого в принципе потому что он линейный.
При очень грубой целочисленной арифметике с округлениями такой эффект теоретически возможен, но в любом случае надо проводить анализ.

Покажите плиз картинки и приведите параметры фильтра.

Николай
Сообщения: 5
Зарегистрирован: 04 май 2019, 01:15

Re: искажение синусоиды ких фильтром вне полосы пропускания

Сообщение Николай »

Во вложении файл fir_lp15kHz.csv с коэффициентами КИХ фильтра и картинки -
АЧХ(децибелы от максимума) в общем и крупно около полосы пропускания, s1- реакция фильтра на сигнал
s = sin(2*pi*125000*t), частота дискретизации 256kHz. На одном из рисунков показан фрагмент
s1 (укрупненно, чтобы были видны особенности), на другом - периодограмма s1 с неожиданным
возмущением в нижней части спектра. Все выполнено в Питоне.
Вложения
exampleForDSPlib.zip
(223.13 КБ) 198 скачиваний

Николай
Сообщения: 5
Зарегистрирован: 04 май 2019, 01:15

Re: искажение синусоиды ких фильтром вне полосы пропускания

Сообщение Николай »

После того, как написал, понял, что непохожесть s1 на синусоиду объясняется тем, что s = sin(2*pi*125000*t)
и должен так выглядеть при частоте дискретизации 256 kГц из-за малого отношения частот 256/125. Но почему тогда сигнал s2, полученный применением фильтра к s1 (т.е. фильтр два раза применили к s), выглядит уже совсем не так? И спектр плохой.
Обновил вложение, чтобы вставить картинки для s2 (сигнал и спектр). Предыдущее вложение можно не смотреть.
Вложения
ExamlesForDSPlib.zip
(286.31 КБ) 247 скачиваний

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

Re: искажение синусоиды ких фильтром вне полосы пропускания

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

Посмотрел в октаве. Воспроизвелось практически все, кроме s2.

Если беру исходный сигнал без окна, то по выходу фильтра получается переходной процесс:
1.png
но после переходного процесса как раз получается что ожидается
2.png
Смотрю спектральную плотность мощности (Welch method) для сигнала s1 и s2 c прямоугольным окном получаем:
3.png
Чтобы убрать переходной процесс надо на исходный s1 наложить окно (я например накладывал окно Тьюки) и получим:

s1 = sin(2*pi*125000*t).*tukeywin(N, 0.05)';

тогда после фильтрации s2 идет без переходного процесса:
4.png
и спектральную плотность мощности тоже вполне нормальная
5.png
Почему ваша s2 так странно выглядит я сказать не могу.

Если хотите, то можете показать ваш код на питоне, попробую посмотреть.

Теперь по существу вопроса:
НЧ мусор на спектре возникает ввиду шумов представления числа на уровне -300дБ (это уже практически граница динамического диапазона формата double). Поскольку фильтр получился аж 800 порядка с подавлением 150 дБ, то этот шум виден на спектре. Но в сигнале его должно быть не видно, потому что он на 100 дБ ниже

Николай
Сообщения: 5
Зарегистрирован: 04 май 2019, 01:15

Re: искажение синусоиды ких фильтром вне полосы пропускания

Сообщение Николай »

Огромное спасибо за такой детальный ответ! У меня вопрос по терминологии: правильно ли я понял, что переходной процесс - это первые Lf отсчетов выходного сигнала, где Lf -длина фильтра? То есть, та часть отклика фильтра, где суммирование в свертке отчасти по сигналу, а отчасти по нулям? Кроме того, судя по Вашей формуле для s1, для Вас s1 - это исходный сигнал, a s2=F(s1). A у меня, может, я не очень четко это объяснил, есть сигнал s = sin(2*pi*125000*t), далее s1=F(s), и s2 = F(s1) =F(F(s)), т.е. s2 - результат двукратного применения фильтра к синусоиде, так сказать, каскад из двух одинаковых фильтров. Может, мы поэтому не сходимся по s2? Я вместо применения окна просто отрезаю от выходного сигнала куски, равные длине фильтра (от начала и от конца) и думаю, что таким образом избавляюсь от переходных процессов. Интересно было бы узнать Ваше мнение, насколько это правильно/неправильно.

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

Re: искажение синусоиды ких фильтром вне полосы пропускания

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

А ну тогда все сходится. Два раза отфильтровав вы полностью подавляете сигнал на 300 дБ. В результате остаётся остаётся только шум представления в полосе пропускания фильтра. Не удивительно что он такой некрасивый.

Устанять переходной процесс отбрасыванием можно. Только делать это приходится каждый раз укорачивая выход относительно входа.

Николай
Сообщения: 5
Зарегистрирован: 04 май 2019, 01:15

Re: искажение синусоиды ких фильтром вне полосы пропускания

Сообщение Николай »

Все ясно, благодарю.

Ответить