A pesar del ahorro de recursos que la FFT (Transformada Rápida de
Fourier) consigue en comparación con la DFT ordinaria (Transformada Discreta de Fourier),
para algunas aplicaciones simplemente se requiere calcular el espectro para
algunas frecuencias de interés. Un ejemplo de esto se tiene en la demodulación
FSK, en las cuales únicamente dos frecuencias son empleadas para transmitir
datos binarios, otro ejemplo es matriz DTMF (Dual Tone Multifrequency)
de los teléfonos con marcación por tonos.
Para estas aplicaciones el algoritmo de Goertzel reduce la cantidad
de operaciones en números reales en casi la mitad en relación
con el cálculo directo de la DFT.
El algoritmo de Goertzel se obtiene como una adaptación de la ecuación
de la DTF, equivalente a una convolución que puede ser implementada
mediante un filtro digital.
A partir de las constantes de la DFT tenemos que
e
-
j
2
π
k
N
=
W
N
k
e
-
j
2
π
k
N
=
W
N
k
(1)
y considerando que
W
N
-
N
k
=
1
W
N
-
N
k
=
1
(2)
podemos escribir la ecuación de la DFT de manera equivalente a
X
(
k
)
=
∑
n
=
0
N
-
1
x
(
n
)
1
W
N
n
k
=
∑
n
=
0
N
-
1
x
(
n
)
W
N
-
N
k
W
N
n
k
=
∑
n
=
0
N
-
1
x
(
n
)
W
N
-
k
(
N
-
n
)
X
(
k
)
=
∑
n
=
0
N
-
1
x
(
n
)
1
W
N
n
k
=
∑
n
=
0
N
-
1
x
(
n
)
W
N
-
N
k
W
N
n
k
=
∑
n
=
0
N
-
1
x
(
n
)
W
N
-
k
(
N
-
n
)
(3)
expandiendo la sumatoria tenemos
X
(
k
)
=
W
N
-
k
x
(
0
)
+
x
(
1
)
W
N
-
k
+
x
(
2
)
W
N
-
k
+
⋯
+
x
(
N
-
1
)
W
N
-
k
X
(
k
)
=
W
N
-
k
x
(
0
)
+
x
(
1
)
W
N
-
k
+
x
(
2
)
W
N
-
k
+
⋯
+
x
(
N
-
1
)
W
N
-
k
(4)
esta ecuación en diferencias puede ser escrita en forma recursiva
como
y
(
n
)
=
W
N
-
k
y
(
n
-
1
)
+
x
(
n
)
y
(
n
)
=
W
N
-
k
y
(
n
-
1
)
+
x
(
n
)
(5)
en donde
y
(
0
)
=
W
N
-
k
x
(
0
)
y
(
1
)
=
W
N
-
k
y
(
0
)
+
x
(
1
)
y
(
2
)
=
W
N
-
k
y
(
1
)
+
x
(
2
)
⋮
y
(
N
-
1
)
=
W
N
-
k
y
(
N
-
2
)
+
x
(
N
-
1
)
y
(
0
)
=
W
N
-
k
x
(
0
)
y
(
1
)
=
W
N
-
k
y
(
0
)
+
x
(
1
)
y
(
2
)
=
W
N
-
k
y
(
1
)
+
x
(
2
)
⋮
y
(
N
-
1
)
=
W
N
-
k
y
(
N
-
2
)
+
x
(
N
-
1
)
(6)
para las condiciones iniciales de funcionamiento y(-1)=0y(-1)=0.
De esta manera el coeficiente de la DFT para kk es equivalente a
la salida de la ecuación en diferencias en el tiempo n=N-1n=N-1.
X
(
k
)
=
y
(
N
-
1
)
X
(
k
)
=
y
(
N
-
1
)
(7)
Expresando la ecuación en diferencias como una función de transferencias
tenemos
Y
(
z
)
X
(
z
)
=
H
(
z
)
=
1
1
-
W
N
-
k
z
-
1
=
1
-
W
N
k
z
-
1
1
-
W
N
k
+
W
N
-
k
z
-
1
+
z
-
2
=
1
-
W
N
k
z
-
1
1
-
2
c
o
s
2
π
k
N
z
-
1
+
z
-
2
Y
(
z
)
X
(
z
)
=
H
(
z
)
=
1
1
-
W
N
-
k
z
-
1
=
1
-
W
N
k
z
-
1
1
-
W
N
k
+
W
N
-
k
z
-
1
+
z
-
2
=
1
-
W
N
k
z
-
1
1
-
2
c
o
s
2
π
k
N
z
-
1
+
z
-
2
(8)
Esta función de transferencias representa a un filtro IIR
De esta manera, y entendiendo que cada valor de kk se encuentra
relacionado con una banda del espectro de frecuencias de la señal
x(n)x(n), podemos obtener la energía únicamente en las bandas que nos
interesan y ahorrar cálculos en bandas no requeridas.