# Sliding Goertzel of Jacobsen&Lions correct?

Started by July 26, 2003
```On Mon, 04 Aug 2003 16:48:10 -0500, Dennis@NoSpam.com wrote:

>ricklyon@remove.onemain.com (Rick Lyons) wrote:
>
>>Hi,
>>  agreed.  Hey guys, did we all agree that the Sliding Goertzel
>>(unlike the standard Goertzel algorithm) only operates at
>>integer values of k?
>>
>>[-Rick-]
>
>Hmmm that's interesting.  With the standard Goertzel(GA) I could pretend I zero
>padded with a million zeros and choose k as close to the frequency I was
>searching for as I wanted. This is because the GA magnitude calc doesn't change
>no matter how many zeros you pad with.  However, with the sliding GA, I'm adding
>the current and subtracting the back value.  I can't very well subtract the
>millionth zero in the SGA.
>
>Dennis

Hi Dennis,

I was thinking about the freq-domain resonant frequencies.

For the N-sample Goertzel algo, k can be any value between
0 and N.  (Jon Harris pointed that out to me.)

For the N-sample Sliding Goertzel, the comb filter places
N zeros equally-spaced around the unit circle.  For correct
pole/zero cancelation, the value of k must place a pole
exactly on one of the zeros.  Thus k cannot be just any
arbitrary value.

Just thought I'd remind us all about that fact.

[-Rick-]

```
```"Rick Lyons" <ricklyon@REMOVE.onemain.com> wrote in message

> For the N-sample Goertzel algo, k can be any value between
> 0 and N.  (Jon Harris pointed that out to me.)
>
> For the N-sample Sliding Goertzel, the comb filter places
> N zeros equally-spaced around the unit circle.  For correct
> pole/zero cancelation, the value of k must place a pole
> exactly on one of the zeros.  Thus k cannot be just any
> arbitrary value.
>
> Just thought I'd remind us all about that fact.
>
> [-Rick-]
>

Hello Rick et. al.,

The way I think about it is that you are putting in a pulse and then after a
delay (one than spans the time extent of the transform window) you need to
put in an antipulse. So with this reasoning one would expect the delay needs
to be integral. But if you made your comb filter a little more sophisticated
than having two delta functions comprising its impulse response, you could
have nonintegral delay. After all you just need to make the pulse- antipulse
pair cancel out after the delay. Does this have practical value? I don't
know, but the math allows for this natural extension of the sliding window
idea. Plus the frequency response of the comb filter needs to be flat only
around the center frequency of the Goerzel, so the comb filter's impulse
response can be more localized than a sinc filter. Just my thoughts.

Clay

```
```ricklyon@REMOVE.onemain.com (Rick Lyons) wrote:

>On Mon, 04 Aug 2003 16:48:10 -0500, Dennis@NoSpam.com wrote:
>>Hmmm that's interesting.  With the standard Goertzel(GA) I could pretend I zero
>>padded with a million zeros and choose k as close to the frequency I was
>>searching for as I wanted. This is because the GA magnitude calc doesn't change
>>no matter how many zeros you pad with.  However, with the sliding GA, I'm adding
>>the current and subtracting the back value.  I can't very well subtract the
>>millionth zero in the SGA.
>
>Hi Dennis,
>
>   I was thinking about the freq-domain resonant frequencies.
>
>For the N-sample Goertzel algo, k can be any value between
>0 and N.  (Jon Harris pointed that out to me.)
>
>For the N-sample Sliding Goertzel, the comb filter places
>N zeros equally-spaced around the unit circle.  For correct
>pole/zero cancelation, the value of k must place a pole
>exactly on one of the zeros.  Thus k cannot be just any
>arbitrary value.
>
>Just thought I'd remind us all about that fact.
>
>[-Rick-]

Hi Rick,

What if I padded with M zeros and we had N samples.  Where would the zeros fall
on the unit circle with the N+M Sliding Goertzel? What about zero padding and
the Sliding DFT?

Dennis

```
```On Tue, 05 Aug 2003 10:18:22 -0500, Dennis@NoSpam.com wrote:

>ricklyon@REMOVE.onemain.com (Rick Lyons) wrote:
>
>>On Mon, 04 Aug 2003 16:48:10 -0500, Dennis@NoSpam.com wrote:
>>>Hmmm that's interesting.  With the standard Goertzel(GA) I could pretend I zero
>>>padded with a million zeros and choose k as close to the frequency I was
>>>searching for as I wanted. This is because the GA magnitude calc doesn't change
>>>no matter how many zeros you pad with.  However, with the sliding GA, I'm adding
>>>the current and subtracting the back value.  I can't very well subtract the
>>>millionth zero in the SGA.
>>
>>Hi Dennis,
>>
>>   I was thinking about the freq-domain resonant frequencies.
>>
>>For the N-sample Goertzel algo, k can be any value between
>>0 and N.  (Jon Harris pointed that out to me.)
>>
>>For the N-sample Sliding Goertzel, the comb filter places
>>N zeros equally-spaced around the unit circle.  For correct
>>pole/zero cancelation, the value of k must place a pole
>>exactly on one of the zeros.  Thus k cannot be just any
>>arbitrary value.
>>
>>Just thought I'd remind us all about that fact.
>>
>>[-Rick-]
>
>Hi Rick,
>
>What if I padded with M zeros and we had N samples.  Where would the zeros fall
>on the unit circle with the N+M Sliding Goertzel? What about zero padding and
>the Sliding DFT?
>
>Dennis

Hi Dennis,
The zeros locations on the unit circle are independent of
the input time-domain sequence to the filter.

If the comb filter has a delay of N samples, the comb portion
of the filter will have N zeros equally-spaced around the unit
circle.

See Ya',
[-Rick-]

```
```ricklyon@REMOVE.onemain.com (Rick Lyons) wrote:
>Hi Dennis,
>
>   I was thinking about the freq-domain resonant frequencies.
>
>For the N-sample Goertzel algo, k can be any value between
>0 and N.  (Jon Harris pointed that out to me.)
>
>For the N-sample Sliding Goertzel, the comb filter places
>N zeros equally-spaced around the unit circle.  For correct
>pole/zero cancelation, the value of k must place a pole
>exactly on one of the zeros.  Thus k cannot be just any
>arbitrary value.
>
>Just thought I'd remind us all about that fact.
>
>[-Rick-]
Hi Rick,

The N-sample Sliding Goertzel (SGA) doesn't have a comb filter because the SGA
formula is not correct as per previous posts.  In the time domain the SGA
iteration in the time domain has an end term that should not be there.

I haven't figured out how to eliminate that time domain end term yet.

Dennis
```
```Many of our DSP audio projects deal with frames of data.  The frame size is
usually smaller the the DFT N.  So we have extended the sliding DFT to
update a frame of data at a time.  Our implementations are on the TI
(54,55,67) cores.  Is this (frame based sliding DFT) generally known and
done?  .

<Dennis@NoSpam.com> wrote in message
news:8s2hivgb7p3fio16jl06q96j8silet6702@4ax.com...
> ricklyon@remove.onemain.com (Rick Lyons) wrote:
> <snip>
> >My (Rabiner & Gold) version and Dennis' version give the same
> >DFT magnitude results.  To get the correct phase results, my
> >version of the Sliding DFT requires an additional phase correction.
> >Dennis' version, which is not new by the way, requires no such
> >phase correction.  So, of the four forms of the Sliding DFT that
> >I've seen, Dennis' is the form of the Sliding DFT that
> >I now recommend.
> >
> >So Dennis, there's no typo in the article.  But your Sliding DFT
> >expression is the one I'd choose in the future.
> >
> >I haven't looked at Eric's paper yet, but I will.
> >
> >See Ya,
> >[-Rick-]
>
> Hi Eric,
>
> The Sliding DFT version of the form
>
>  Sk(n)=(Sk(n-1) - x(n-N) + x(n))*exp(j2PIk/N)
>
> is not mine of course.  I believe it was derived by Tom Springer in his
article
> "Sliding FFT computes frequency spectra in real time" EDN Mag pp 161-170
Sept
> 29, 1988.
>
> I don't have this article and cannot get it, but I've seen Springer quoted
as
> the author of this version in a number of references on the Sliding DFT.
>
> I haven't found any earlier references to the Sliding DFT.
>
> Dennis
>

```
```On Tue, 19 Aug 2003 10:48:37 -0500, "Jerry J. Trantow"
<jtrantow@ieee.org> wrote:

>Many of our DSP audio projects deal with frames of data.  The frame size is
>usually smaller the the DFT N.  So we have extended the sliding DFT to
>update a frame of data at a time.  Our implementations are on the TI
>(54,55,67) cores.  Is this (frame based sliding DFT) generally known and
>done?  .
>

Hello jerry,

what does it mean to "extend the sliding DFT to
update a frame of data at a time"?

[-Rick-]

```