Wie viele Abgriffe benötigt ein FIR-Filter?


20

Ich möchte eine Reihe von FIR-Filtern entwerfen, um einen Tiefpassfilter zu implementieren. Ich versuche auch, die Latenz des Signals durch den Filter zu verringern, sodass ich mich frage, wie viele Abgriffe ich möglicherweise mindestens verwenden kann.

Ich weiß , dass mehr Wasserhähne zu einer schärferen Grenz der Frequenz und eine bessere Sperrbereichsdämpfüng usw. führen kann jedoch , was ich bin interessiert, ist grund - wenn ich einen Tiefpassfilter mit Cutoff implementieren möchten bei say bedeutet das, dass ich mindestens 100 Abgriffe benötige, um die niederfrequenten Signale zu dämpfen? Oder kann ich mit weniger Klicks davonkommen und wenn ja, gibt es eine theoretische Untergrenze?fs100

Antworten:


24

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)

N23log10[110δ1δ2]fsΔf

mit

fs the sampling rateΔf the transition width, ie. the difference between end of pass band and start of stop bandδ1 the ripple in passband, ie. "how much of the original amplitude can you afford to vary"δ2 the suppresion in the 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=103 .

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=104 .

Also, schließen Sie dies an:

NTommys Filter23Log10[110δ1δ2]fsΔf=23Log10[11010-410-3]fsfs200=23Log10[11010-7]200=23Log10[110-6]200=23(Log10106)200=236200=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):GNU Radio basierte FFT FIR Filterungrate results: rate_avg = 1.40982e + 08
  • MMM=50120050=24
  • 96kSslächerlich141FRAUs
  • 1100

3
Lake DSP hat Mitte bis Anfang der neunziger Jahre 256.000 FIR-Filter in Echtzeit ausgeführt. 1200 Wasserhähne? Phfffft! ;-)
Peter K.

2
@PeterK. Das ist der Geist! Tiefster Respekt vor dieser 256-kt-FIR - die numerische Genauigkeit, mit der sie das gebaut haben, muss so atemberaubend gewesen sein wie die schiere Größe des Designs. Die frühen 90er Jahre müssen eine interessante Zeit gewesen sein, da sie zu jung waren, um sie selbst zu genießen. Ich habe vor einiger Zeit mit einem Ingenieur gesprochen, der damals DFT-ICs hergestellt hat. Der Bedarf an anwendungsspezifischen DSP-ASICs schien gerade hoch zu sein, als die Leute erkannten, was DSP-technisch mit Computerplattformen möglich war, um die resultierenden Datenströme tatsächlich zu verarbeiten, aber keine "Mehrzweck" -Beschleuniger (im Gegensatz zu heute).
Marcus Müller

@PeterK., Ja, aber die Aussies ziehen uns immer am Bein.
Robert Bristow-Johnson

@ robertbristow-johnson oy matey, was für ein insiderwitz ist hier los: D?
Marcus Müller

2
@ MarcusMüller, obwohl es damals im Vergleich zu heute eine zunehmende Beliebtheit von ASICs zu geben schien (und ich denke, weil jeder, der eine ASIC-Spezifikation / ein ASIC-Designer war, jetzt nur FPGAs verwendet), gab es früher "Mehrzweck" -DSPs 90er Jahre. Dieses LakeDSP-Ding wurde aus 6 DSP56001 gemacht.
Robert Bristow-Johnson

14

Für eine schnelle und sehr praktische Schätzung mag ich die Faustregel von Fred Harris:

Nteinps=EINtten22BT

woher:

Dämpfung ist die gewünschte Dämpfung in dB,

BTBT=FstOp-FpeinssFs

FstOpFpeinss

Fs

Dies kommt dem sehr nahe, was Sie für ein lineares Phasenfilter mit einer Durchlassbandwelligkeit von 0,1 dB erhalten würden. Ich verwende diese Faustregel oft, um eine erste Vorstellung von der Anzahl der benötigten Abgriffe zu bekommen und sie dann durch Iteration im Filterentwurfsprozess zu ändern.

Zu beachten ist auch, dass diese Faustregel einen guten Einblick in die Faktoren bietet, die die Anzahl der Abgriffe tatsächlich bestimmen: Stoppbanddämpfung und Steilheit des Übergangsbands (und Durchlassbandwelligkeit, aber in der Regel - zumindest für Filter, für die ich entworfen habe Funkkommunikationsanwendungen - die Dämpfungsanforderung würde über der Welligkeit dominieren). Es fehlt also Ihre Frage, wie schnell Sie zu einem Stopp-Band übergehen müssen, wenn Sie einen Cutoff bei Fs / 100 angeben.

FsFpeinssFstOp

Nteinps=60222/100=137

Das Herumspielen mit diesen Zahlen kann auch die Bedeutung der Verarbeitungsreduzierung unter Verwendung von Dezimierungsansätzen demonstrieren.


7

Ergänzen Sie die akzeptierte Antwort um einige zusätzliche Verweise. Ich werde nicht die Formeln schreiben, die beteiligt sein können. Diese Formeln ergeben meistens Faustregeln oder Annäherungen, von denen aus man beginnen kann. Sie können an diesen Zahlen für Ihr tatsächliches Design herumspielen.

Einer der Gründe für Bellangers Entwurf ist: Über die Komplexität der Berechnungen in digitalen Filtern, 1981, Proc. EUR. Conf. Schaltungsentwurf, M. Bellanger. Es ist ziemlich schwer zu bekommen, aber es ist machbar . Interessanterweise werden auch Formeln zur Bewertung der Anzahl der Bits pro Koeffizient angegeben, die bei der Implementierung mit endlicher Arithmetik berücksichtigt werden sollten. Eine zugänglichere Version auf Französisch ist: Evaluation de la complexité des filtres numériques , 1982.

Einige andere Formeln sind in Finite Impulse Response Filter Design , Handbook for Digital Signal Processing, 1993, T. Samamaki, zusammengefasst.

In jüngerer Zeit können Sie Genaue Schätzung der minimalen Filterlänge für optimale FIR-Digitalfilter lesen , 2000, K. Ichige et al.

Schließlich wird in der Veröffentlichung Effizientes Design von FIR-Filtern mit minimalen Filterordnungen unter Verwendung der 10-Norm-Optimierung von 2014 ein Design gefordert , bei dem die Reihenfolge schrittweise verringert wird.


4

minimieren max(|H(ω)|)für alle ω im stopband
unterliegen1δ|H(ω)|δ für alle ω im Passband

Die wichtigsten praktischen Probleme, die ich mir vorstellen kann, sind die Anzahl der Frequenzabtastungen, die bei der Optimierung verwendet werden, da das Verhalten zwischen den Frequenzen zu unerwünschten Effekten führen kann. Wie gut die Passform sein kann, hängt natürlich von der Anzahl der Gewindebohrer ab. Ich denke man könnte sagen, dass die minimale Anzahl von Abgriffen ist, wenn das Problem nicht mehr realisierbar ist. Eine Lösung wäre also, das Machbarkeitsproblem zu lösen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.