Посилаючись на класичну цифрову обробку сигналів Беллангера - теорія та практика , справа не в тому, де знаходиться ваша частота відключення, а в тому, скільки потрібно ослаблення, скільки пульсації в сигналі, який ви хочете зберегти, ви можете терпіти і, головне, як звузити перехід від прохідної до зупинкової смуги (ширина переходу).
Я припускаю, що ви хочете лінійний фазовий фільтр (хоча ви вказуєте мінімальну затримку, я взагалі не думаю, що мінімум фазового фільтра - це гарна ідея, якщо тільки ви добре не знаєте, що ви будете робити зі своїм сигналом згодом) . У цьому випадку порядок фільтра (який є кількістю дотиків) є
N≈23log10[110δ1δ2]fsΔf
з
fsΔfδ1δ2 the sampling rate the transition width, ie. the difference between end of pass band and start of stop band the ripple in passband, ie. "how much of the original amplitude can you afford to vary" the suppresion in the stop band.
Давайте підключимо кілька цифр! Ви вказали частоту відсічення fs100 , тож я просто заздалегідь запевняю, що ваша ширина переходу не буде більше половини, томуΔf=fs200 .
Виходячи з технології SDR / RF, 60 дБ придушення, як правило, цілком достатньо - апаратне забезпечення, без шалених витрат, не стане кращим для збереження небажаних сигналів від вашого входу, так що, нехай не витрачати процесор на фантастичний фільтр, який краще ніж те, що може зробити ваше обладнання. Отже, δ2=−60 dB=10−3 .
Скажімо, ви можете жити з різницею амплітуди 0,1% в смузі пропускання (якщо ви можете жити з більшою кількістю, також розглядайте вимоги до придушення менш суворими). Це δ1=10−4 .
Отже, підключіть це до:
NTommy's filter≈23log10[110δ1δ2]fsΔf=23log10[110⋅10−4⋅10−3]fsfs200=23log10[110⋅10−7]200=23log10[110−6]200=23(log10106)200=23⋅6⋅200=800 .
Тож із вашими 200 кранами вам далеко, якщо ви використовуєте надзвичайно вузьку смугу пропускання у своєму фільтрі, як я вважав, що ви хочете.
Зауважте, що це не повинно бути проблемою - насамперед, фільтр на 800 кранів - це страшно, але, чесно кажучи, лише на перший погляд:
- Як я перевіряв у цій відповіді на StackOverflow : процесор сьогодні є швидким , якщо ви використовуєте чиюсь оптимізовану процесором реалізацію FIR. Наприклад, я використав FFT-FIR-реалізацію GNU Radio з точно вказаними вище специфікаціями фільтра. Я отримав 141 мільйон проб в секунду - що може вам або не вистачить. Ось ось наш тестовий випадок, що стосується конкретного питання (на що знадобилося кілька секунд):
- MMM=50120050=24
- 96kSs≪ridiculously141MSs
- 1100