Чому мій стоп-фільтр послаблює інші частоти?


12

Ось мій код для двотонового сигналу, де я використовую стоп-діапазон для видалення більш високого тону, а потім намічаю в частотній області раніше (синім кольором) і після (червоним кольором) після згортання мого сигналу з коефіцієнтами фільтра .

Якщо ви помістите цей код у Matlab, ви зможете чітко побачити, що фільтр успішно видалив більш високу частоту, але чомусь амплітуда нижчої частоти скоротилася навпіл, і чим більше я збільшую # коефіцієнтів фільтра, тим більше це просто згладжує всю мою криву, чому це відбувається? І як я можу це запобігти, щоб стоп-діапазон не поширювався назовні? Ось зображення та код:

введіть тут опис зображення

fSampling = 8000;
tSampling = 1 / fSampling;

t = 0: tSampling: 0,005;
F0 = 1000;
F1 = 3000;

xt = sin (2 * pi * F0 * t) + sin (2 * pi * F1 * t);
ht = fir1 (40, .25, 'стоп');
yt = conv (xt, ht);

fAxis = -4000: 125: 4000-125;

xF = fft (xt, 64);
MagXF = зміна (фс (xF));

сюжет (fAxis, MagXF);
Зачекай

yF = fft (yt, 64);
MagYF = зміна (FF (yF));

сюжет (fAxis, MagYF, 'r')

1
Фільтр смугової / смугової зупинки за своєю суттю недосконалий і завжди впливатиме на ділянки спектру, які ви хочете залишити в спокої. Це природа звіра.
Даніель Р Хікс

1
Хм ... чи є способи протидіяти цьому? Або ще один порівняно простий фільтр, який краще підійде? Я не знаю багато про вибійні фільтри, але я знаю, що вони дійсно вузькі смугові фільтри і що Matlab має команди для них.
Заубертранк

2
Як я вже сказав, це притаманне. Проектування фільтра - це завжди компроміс з точки зору оптимізації одних параметрів за рахунок інших (і за рахунок витрат).
Даніель Р Хікс

Відповіді:


12

Фільтри завжди мають притаманне «відкат» у своїй частотній характеристиці, тому що ви практично не можете реалізувати смугу пропускання, яка є ідеальною прямокутною функцією. Для фільтрів низьких частот точка, коли величина вашої частотної реакції падає до -3 дБ, називається смугою пропускання, а все, що знаходиться поза нею, називається діапазоном зупинки (технічно все, що знаходиться поза кутовою частотою, але ми візьмемо кутова частота повинна бути рівнем -3 дБ). Від того, як швидко ваша частотна характеристика ослаблюється поза смугою пропускання, залежить від довжини фільтра.

Якщо ви подивитесь на частотну характеристику вашого фільтра ht, то побачите, що він падає до -6 дБ при 1000 Гц:

введіть тут опис зображення

Тож має сенс, що потужність падає на 6 дБ після фільтрації, що ви бачите на своїй фігурі як удвічі менша за амплітудою.

Якби ви переглянули документацію fir1функції, яку ви використовували, ви б також зрозуміли це (моє наголос):

B = fir1(N,Wn)розробляє Nцифровий фільтр FIR низького пропускання і повертає коефіцієнти фільтра у N+1вектор довжини B. Частота відсікання Wn повинна бути між 0 < Wn < 1.0, що 1.0 відповідає половині норми вибірки. Фільтр Bсправжній і має лінійну фазу. Нормоване посилення фільтра при Wn становить -6 дБ.

Тепер для створення більш чітких фільтрів, відповіді, які наближаються до прямокутника, вам доведеться використовувати фільтри IIR, які мають власну безліч проблем зі стабільністю тощо, але, безумовно, варіант. Тут Ви можете побачити мою відповідь на деякі ідеї щодо впровадження дискретного фільтру IIR, розділ II, другого порядку, який дає дуже гострі кути. Приклад є для фільтра смугового проходу, але ви можете прочитати документи для функцій, які використовуються там, і реалізувати версію з низьким проходом самостійно.


1

Потрібен час, щоб фільтр "вирішив", якщо сигнал знаходиться тільки всередині або просто поза переходом фільтра. Одне рішення - просто перенести перехід фільтра від будь-якого сигналу, що цікавить вас, наприклад, на півдорозі між вашими двома тестовими сигналами, де у вашому тестовому випадку дуже мало сигналу для спотворення недосконалим рішенням.


0

Використовуйте

ht = fir1(40,.5,'stop');

натомість, і у вас буде дуже низьке загасання при F0 і дуже високе загасання при F1.

введіть тут опис зображення

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.