Forums

Is the usual Goertzel algorithm wrong?

Started by Unknown November 23, 2005
Hi,
   I"ve been trying to figure the Goertzel algorithm out and I am at a
point where the maths just doesn't seem to work out right:

For example, referring to

http://cnx.rice.edu/content/m12024/latest/

There is the following claim:

X(k) = y(N)                  (1)

However, this is obviously FALSE because  from the definition of X(k)
there is NO x(N) term while the difference equation:
    y(N) = W*y(N-1) + x(N) where W = Exp[-2 Pi k/N]

clearly has this term. I believe the correct statement is:

    X(k) = (y(N-2)*W + x(N-1))*W

This is not the only place that makes the claim that (1) is true. Other

literature like Proakis (Digital Signal Processing page 480) makes the
same claim too. It cannot be that I'm the only person who sees this ;-)

and so I bet that I'm missing something. Can some one please help
enlighten me?

Thanks your help!


Cheng-Yang Tan

x(N) is the (N+1)th sample (starting from x(0), x(1), ...), you when
you run the iteration (N+1)st time, you will have the DFT coefficient
in y. DFT coefficient will not be obtained if iteration runs for only N
times.

When you have only x(0), x(1), ....x(N-1), you assume x(N) = 0.

Junior wrote:
> x(N) is the (N+1)th sample (starting from x(0), x(1), ...), you when > you run the iteration (N+1)st time, you will have the DFT coefficient > in y. DFT coefficient will not be obtained if iteration runs for only N > times. > > When you have only x(0), x(1), ....x(N-1), you assume x(N) = 0.
Hi Junior, Thanks for the info above about assuming that x(N) = 0. The formula which I wrote earlier X(k) = (y(N-2)*W + x(N-1))*W = y(N-1)*W + x(N) = y(N-1)*W + 0 if x(N) = 0 is exactly what you said. Is what you say a univeral assumption for all cases that x(N) = 0 if it is outside the sampling set? This is rather unusual since we always assume a stream of continuous data going into the filter. Thanks! Cheng-Yang Tan