Goertzel-Algorithmus
aus Wikipedia, der freien Enzyklopädie
Der Goertzel-Algorithmus ist ein Verfahren aus der digitalen Signalverarbeitung und stellt eine besondere Form der diskreten Fourier-Transformation (DFT) dar. Im Gegensatz zu den verschiedenen Berechnungsmethoden bei der diskreten Fouriertransformation, welche immer alle diskreten Spektralkomponenten in einem Block berechnen, ist es mit dem Goertzel-Algorithmus möglich nur einzelne diskrete Spektralanteile (engl. Bins für Nadeln) zu berechnen. Entwickelt wurde der Algorithmus 1958 von Gerald Goertzel.
Inhaltsverzeichnis |
[Bearbeiten] Funktion
Der Algorithmus basiert auf einer Struktur bestehend aus einem digitalen Filter welcher um eine Zustandssteuerung erweitert ist. Die Zustände unterteilen die Berechnung in den Rückwärtszweig in welchen die im Zeitbereich abgetasteten Eingangswerte geladen werden und in einem Vorwärtszweig welcher das Ausgangssignal liefert. Die Rückwärtsschleife wird bei jedem digitalen Abtastwert (engl. sample) durchlaufen und ist als ein rekursives digitales Filter mit zwei Zustandsspeichern und einem Akkumulator aufgebaut. Der Vorwärtszweig wird erst nach N Abtastwerten einmalig durchlaufen und liefert aus den Zustandsspeichern den berechneten komplexen Ausgangswert, die spektrale Komponente nach Betrag und Phase.
Durch die Wahl der dabei eingesetzten Filterkoeffizienten lässt sich die Frequenzselektivität einstellen und durch die Wahl der Anzahl der Abtastwerte N lässt sich der Gütefaktor wählen. Im Gegensatz zu der schnellen Fouriertransformation muss N keine Zweierpotenz sein, sondern kann beliebige positive ganzzahlige Werte annehmen.
Pro Spektralkomponente ist allerdings eine eigenständige Goertzel-Struktur notwendig. Daher ist dieser Algorithmus vor allem dann vorteilhaft und mit geringerem Rechnenaufwand anzuwenden, wenn nicht das komplette Spektrum berechnet werden soll, sondern nur einzelne Spektralkomponenten daraus.
Ausführliche mathematische Herleitungen des Algorithmus finden sich in unten angegebenen Literaturquellen.
[Bearbeiten] Aufwandsabschätzung
Pro Berechnung einer Spektralkompoente sind bei dem Goertzel-Algorithmus 4N Additionen und 2N Multiplikationen notwendig. Vergleicht man diesen Aufwand mit dem Berechnungsaufwand bei der schnellen Fourier-Transformation ist der Goertzel-Algorithmus immer dann effizienter, wenn weniger als 5/6 log2N Spektralkomponenten berechnet werden sollen. Denn pro Spektralkomponente (bin) ist eine weitere Goertzelstruktur notwendig, während bei der schnellen Fourier-Transformation der Berechnungsaufwand nur mit N/log2N ansteigt.
Der Algorithmus kann effizient in digitalen Signalprozessoren implementiert werden.
[Bearbeiten] Anwendungen
Die Anwendungen liegen in der Erkennung einzelner Frequenzen (Tonerkennung) in einem Signal wie beispielsweise bei der Erkennung der Signalisierungsfrequenzen bei dem im Telefonbereich eingesetzten Mehrfrequenzwahlverfahren. In diesem Fall muss nur der Betrag der Spektralkomponente ausgewertet werden, was weitere Vereinfachungen in der Berechnung gestattet.
[Bearbeiten] Literatur
- Gerald Goertzel: An Algorithm for the Evaluation of Finite Trigonometric Series, American Math. Monthly, Vol 65, pp. 34-35. 1958
- Alan V. Oppenheim: Zeitdiskrete Signalverarbeitung, München: Oldenbourg Verlag 1999. ISBN 3-486-24145-1 (deutsche Übersetzung von Discrete-Time Signal Processing, Prentice Hall Inc. 1989)