Goertzel
Berechnet effizient den DFT-Wert einer einzelnen, fest gewählten Frequenz — der schlanke Baustein für Einzelton-Erkennung statt einer vollen FFT.
1. Beschreibung des Blocks
Der Goertzel-Block (blocks.goertzel_fc) berechnet mit dem Goertzel-Algorithmus den komplexen DFT-Koeffizienten einer einzigen, vorgegebenen Frequenz aus jeweils Length aufeinanderfolgenden Eingangssamples. Anders als der FFT-Block oder Log Power FFT, die immer das komplette Spektrum liefern, wertet der Goertzel-Block gezielt nur die eine interessierende Frequenz aus — dadurch deutlich günstiger in der Rechenlast, wenn nicht das ganze Spektrum, sondern nur ein bekannter Einzelton gebraucht wird.

2. Technischer Einsatz
Goertzel ist der Standardbaustein für Einzelton-Erkennung, wenn die Zielfrequenz(en) bereits bekannt sind: DTMF-Wahltöne, CTCSS-/Sub-Audio-Tonsquelch, Pilotton-Erkennung, SelCall/Pager-Tonfolgen oder eine eigene Tonfolge zur Aktivierung einer Funktion. Für jeden zu erkennenden Ton wird ein eigener Goertzel-Block mit passender Frequency benötigt; bei mehreren gleichzeitig zu prüfenden Tönen (z. B. DTMF-Paare) wird für jede Frequenz eine eigene Instanz parallel angeschlossen.
Ist die Zielfrequenz dagegen nicht exakt bekannt oder soll das gesamte Spektrum durchsucht werden, ist der volle FFT- bzw. Log Power FFT-Pfad die richtige Wahl — Goertzel lohnt sich gerade dadurch, dass er auf diese Breitbandsuche bewusst verzichtet.
3. Parameter und Dimensionierung
| Parameter | Typ/Einheit | Bedeutung | Dimensionierungshinweis |
|---|---|---|---|
Rate |
Hz | Abtastrate des Eingangssignals | muss der tatsächlichen Flowgraph-Rate entsprechen |
Length |
Samples | Fensterlänge, über die ein DFT-Wert berechnet wird | größere Länge = feinere Frequenzauflösung, aber langsamere Reaktion und niedrigere Ausgaberate (Rate/Length); kleinere Länge = schnellere Erkennung, aber breiterer Erfassungsbereich um Frequency |
Frequency |
Hz | Zielfrequenz, deren DFT-Koeffizient berechnet wird | muss < Rate/2 bleiben (Nyquist); Genauigkeit der Erkennung hängt von Length ab |
Rate / Length — dieselbe Abwägung wie bei der Bin-Breite einer vollen FFT, hier aber nur für die eine gewählte Frequenz statt für das ganze Spektrum.4. Ein- und Ausgänge
| Ein-/Ausgang | Typ |
|---|---|
| Eingang | Float (reeller Signalstrom) |
| Ausgang | Complex — ein Wert je Length Eingangssamples (dezimiert) |
Der Ausgang ist ein einzelner komplexer Wert pro Fenster: sein Betrag entspricht der Energie des Signals bei Frequency, seine Phase der Phasenlage dieser Frequenzkomponente. Für eine reine Pegelauswertung (z. B. Schwellwert zur Ton-Erkennung) folgt üblicherweise ein Complex to Mag- oder Complex to Mag²-Block.
5. Weitere wichtige Aspekte
Kein Ersatz für Filterung: Goertzel liefert nur den DFT-Wert an der Zielfrequenz — Signalanteile aus benachbarten Frequenzen, die innerhalb der durch Length bestimmten Bin-Breite liegen, tragen weiterhin zum Ergebnis bei. Für eine trennscharfe Erkennung dicht beieinanderliegender Töne muss Length entsprechend groß gewählt werden.
Typische Weiterverarbeitung: Ausgang → Complex to Mag → Schwellwertvergleich → Bool-Gate (Message), z. B. um eine Funktion erst nach Erkennung einer definierten Tonfolge zu aktivieren.
Verwandte Blöcke: FFT und Log Power FFT für die Analyse des gesamten Spektrums statt einer einzelnen Frequenz.