Algorithme de Goertzel

En pratique, l'algorithme Goertzel est utiliser dans les détecteurs de tonalité DTMF. C'est est un puissant algorithme spécifique, utilisé pour le calcul de transformée de Fourier à coefficients discrets (DFT) et les spectres de signaux en utilisant une méthode de filtrage numérique sans nécessiter une algèbre complexe comme dans l'algorithme DFT.

Plus précisément, l'algorithme de Goertzel est un procédé de filtrage permettant de calculer le coefficient DFT $X(k)$ à la fréquence casier (bins) spécifiée $k$ avec les $N$ données numériques fournies $x (0), x (1). . . X (N-1)$. Nous pouvons commencer à illustrer l'algorithme Goertzel en utilisant le second ordre filtre numérique IIR Goertzel.
schema de l'algorithme de Goertzel
fig.1 Goertzel

Algorithme modifié de Goertzel

Il existe un algorithme de Goertzel modifié qui peut être utilisé pour le calcul des spectres de signaux dans le cas où les données en entrée sont purement réelles et que seule la partie réelle des amplitudes de sortie du filtre nous intéresse.
schema de l'algorithme de Goertzel modifié
fig.2 Goertzel modifié

La fonction de transfert de la fig.2 précédente s'écrit $$ G_k(z)=\frac{1}{X(z)}=\frac{1}{1 - 2 cos(\frac{2\pi k}{N}) z^{-1} + z^{-2} }$$ avec $N$ données échantillonnées $x(n)$. $for \,\, n=0,\, 1,\, ...,\, N-1$ et une donnée finale $x(N)=0$
$$\nu_k(n)=2 cos(\frac{2\pi k}{N})\, \nu_k(n-1) - \nu_k(n-2) + x(n)$$ avec les conditions initiales $\nu_k(-1)=0$ et $\nu_k(-2)=0$
Le carré des amplitudes $\left|X(k)\right|^2 $ est donné par $$\left|X(k)\right|^2 = \nu_k^2(N)+\nu_k^2(N-1)- 2 \, cos(\frac{2\pi k}{N})\, \nu_k(N)\, \nu_k(N-1) $$
 

Sources et références

[1] Kevin Banks - The Goertzel Algorithm - August 28, 2002

[2] R. Chassaing, D. S. Reay - Digital Signal Processing and Applications with the TMS320C6713 (annexe F) Wiley, 2008