GNU Radio Companion · Block
Bandsperr-Filter-Blöcke (Filter & Taps)
Band Reject Filter und Band Reject Filter Taps in GRC 3.10 — Funktionsweise, Parameter, Dimensionierung und die gezielte Unterdrückung unerwünschter Störer.
GRC 3.10 bietet zwei eng verwandte Bandsperr-Blöcke, die auf der Funktion firdes.band_reject() bzw. firdes.complex_band_reject() basieren: Band Reject Filter ist der aktive Verarbeitungsblock (Filterentwurf + Signalverarbeitung), während Band Reject Filter Taps ein reiner Variablen-Block ist, der lediglich die Filterkoeffizienten (Taps) berechnet.
1. Beschreibung der Blöcke
Band Reject Filter (filter.fir_filter_*) ist ein kombinierter Block: Er entwirft ein Bandsperrfilter (oft auch Notch-Filter genannt) aus den Parametern und wendet dieses direkt auf das Signal an. Es dämpft einen bestimmten Frequenzbereich (Sperrbereich) und lässt alle Frequenzen darunter und darüber passieren. Details dazu findest du im Artikel Bandpass- und Bandsperrfilter.

Band Reject Filter Taps (firdes.band_reject() als GRC-Variable) berechnet dieselben Koeffizienten, verarbeitet aber selbst keine Daten. Er erzeugt ein Array (float_vector bzw. complex_vector), welches als Parameter an andere Blöcke (z. B. an einen Frequency Xlating FIR Filter) übergeben werden kann.

2. Technischer Einsatz
- Wann „Band Reject Filter" (Block): Zur Beseitigung schmalbandiger, starker Störsignale (z. B. 50-Hz-Brummen im NF-Bereich oder starke Rundfunksender, die den Empfänger übersteuern — oft als „FM-Trap" im HF-Bereich bezeichnet).
- Wann „Band Reject Filter Taps" (Variable): Wenn du ein Sperrverhalten in einem komplexen Filtermodul konfigurieren möchtest, das nur Taps als Eingabe erlaubt.
- Reelle vs. komplexe Taps:
- Reelle Taps (
firdes.band_reject) sind symmetrisch um $0\text{ Hz}$. Sie blockieren Frequenzen sowohl im positiven als auch im negativen Spektrum (gespiegelt). - Komplexe Taps (
firdes.complex_band_reject) können asymmetrisch liegen. Damit ist es möglich, einen ganz bestimmten, einseitigen Frequenzbereich im Spektrum auszublenden, ohne dass das gespiegelte Gegenstück ebenfalls gedämpft wird.
- Reelle Taps (
3. Parameter und Dimensionierung
Beide Blöcke teilen sich die folgenden Kernparameter für den Filterentwurf:
| Parameter | Typ/Einheit | Bedeutung | Dimensionierungshinweis |
|---|---|---|---|
samp_rate |
Hz | Abtastrate des Eingangssignals | muss exakt mit der Rate des eingehenden Datenstroms übereinstimmen |
low_cutoff_freq |
Hz | untere Grenzfrequenz des Sperrbereichs | Frequenz, an der die Dämpfung beginnt. Muss > 0 sein (bei reellen Taps) |
high_cutoff_freq |
Hz | obere Grenzfrequenz des Sperrbereichs | Frequenz, an der die Dämpfung endet. Muss < samp_rate / 2 sein (bei reellen Taps) |
width (Transition Width) |
Hz | Übergangsbreite | Bereich für den Übergang von Durchlass- zu Sperrbereich. Kleiner = steiler, führt aber zu einer deutlich höheren Tap-Zahl ($N \approx A_{sb}/(22 \cdot \Delta f/f_s)$) |
gain |
linear | Gesamtverstärkung des Filters | Standard ist 1.0 (keine Dämpfung/Verstärkung im Durchlassbereich) |
win (Window) |
Enum | Fensterfunktion | Hamming, Hann, Blackman, Rectangular oder Kaiser. Bestimmt die Tiefe der Sperrdämpfung (siehe Fensterfunktionen) |
beta |
— | Kaiser-Beta | nur bei Auswahl des Kaiser-Fensters aktiv; steuert den Kompromiss zwischen Flankensteilheit und Sperrdämpfung |
4. Ein- und Ausgänge
Der Band Reject Filter Taps-Block besitzt keine Signalanschlüsse. Für den Band Reject Filter-Verarbeitungsblock stehen folgende Typen zur Verfügung:
| FIR Type | Eingangstyp | Ausgangstyp | Taps-Art |
|---|---|---|---|
| Complex->Complex (Real Taps) | complex | complex | reell (float) |
| Float->Float (Real Taps) | float | float | reell (float) |
| Complex->Complex (Complex Taps) | complex | complex | komplex (complex) |
| Float->Complex (Complex Taps) | float | complex | komplex (complex) |
5. Weitere wichtige Aspekte
- Echtzeit-Nachstimmung: Grenzfrequenzen können zur Laufzeit verändert werden (z. B. durch Schieberegler in der GUI). GNU Radio berechnet die Taps automatisch neu und aktualisiert das Filter im laufenden Betrieb.
- Filtersteilheit: Eine sehr schmale Kerbe (Notch-Filter) erfordert eine sehr kleine Übergangsbreite (
width). Dies erzeugt eine extrem hohe Tap-Zahl. Falls die CPU-Last zu hoch wird, empfiehlt sich die Prüfung von IIR-Notch-Filtern als recheneffiziente Alternative.