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
Is the usual Goertzel algorithm wrong?
Started by ●November 23, 2005
Reply by ●November 24, 20052005-11-24
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.
Reply by ●November 25, 20052005-11-25
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