In Anlehnung an Bellangers klassische digitale Signalverarbeitung - Theorie und Praxis geht es nicht darum, wo Ihre Grenzfrequenz liegt, sondern darum, wie viel Dämpfung Sie benötigen, wie viel Welligkeit Sie im Signal tolerieren und vor allem wie verengen Sie Ihren Übergang von Pass- zu Stopband (Übergangsbreite) muss sein.
Ich gehe davon aus, dass Sie einen linearen Phasenfilter wünschen (obwohl Sie die minimale Latenz angeben, halte ich einen minimalen Phasenfilter im Allgemeinen nicht für eine gute Idee, es sei denn, Sie wissen genau, was Sie mit Ihrem Signal danach tun werden). . In diesem Fall ist die Filterreihenfolge (die Anzahl der Abgriffe)
N≈ 23Log10[ 110 δ1δ2]fsΔ f
mit
fsΔ fδ1δ2 die Abtastrate die Übergangsbreite, dh der Unterschied zwischen dem Bandende und dem Bandanfang die welligkeit im passband, dh "Wie viel von der ursprünglichen Amplitude können Sie sich leisten, um zu variieren" die Unterdrückung in der Stop-Band .
Lassen Sie uns einige Zahlen einstecken! Sie haben eine Grenzfrequenz von fs100 , also werde ich geheneinfach weiter und holen SieÜbergangsbreite nicht mehr sein wird alsHälfte davon, alsoΔ f= fs200 .
Ausgehend von der SDR / RF-Technologie ist eine Unterdrückung von 60 dB in der Regel völlig ausreichend - Hardware ohne verrückte Kosten kann unerwünschte Signale nicht besser aus Ihrem Eingang fernhalten. Verschwenden Sie also keine CPU mit einem fantastischen Filter, der besser ist als was deine Hardware kann. Daher δ2= - 60 dB = 10- 3 .
Nehmen wir an, Sie können mit einer Amplitudenschwankung von 0,1% im Durchlassbereich leben (wenn Sie mit mehr leben können, sollten Sie auch erwägen, die Unterdrückungsanforderung weniger streng zu gestalten). Das ist δ1= 10- 4 .
Also, schließen Sie dies an:
NTommys 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 .
Mit Ihren 200 Taps sind Sie also weit weg, wenn Sie in Ihrem Filter ein extrem schmales Durchlassband verwenden, wie ich es angenommen habe.
Beachten Sie, dass dies nicht haben ein Problem sein - vor allem, ein 800-Taps Filter ist beängstigend, aber ehrlich gesagt, nur auf den ersten Blick:
- Wie ich in dieser Antwort bei StackOverflow getestet habe : CPU's sind heutzutage schnell , wenn Sie eine CPU-optimierte FIR-Implementierung von jemandem verwenden. Ich habe zum Beispiel die FFT-FIR-Implementierung von GNU Radio mit genau der oben angegebenen Filterspezifikation verwendet. Ich habe eine Leistung von 141 Millionen Samples pro Sekunde - das könnte für Sie ausreichen oder nicht. Hier ist unser fragenspezifischer Testfall (für dessen Erstellung ich Sekunden benötigt habe):
- MMM= 50120050= 24
- 96kSs≪lächerlich141FRAUs
- 1100