Reply by March 24, 20142014-03-24
On Monday, March 24, 2014 11:30:36 AM UTC-4, robert bristow-johnson wrote:
> On 3/24/14 11:08 AM, clay@claysturner.com wrote: > > > > > > Essentially the Goertzel algo recursively computes the DFT of a signal at a single bin frequency by having the signal drive a recursive oscillator. In Goerzel's case the recursion he used in his 1959 paper turns out to be that of a biquad oscillator. Since the Goertzel algo can be generalized to use any 2nd order recursive sinusoidal oscillator ... > > > > this is why i have never been impressed with the use of "Goertzel" (in > > DTMF or similar tone detection) over some other generalized biquad. and > > i think that a peaking EQ can make a sharper passband than a basic BPF. > > maybe not, given the same Q, i dunno i gotta think about it. > > > > but i *know* that i can make a peaking EQ have the mid-point dB > > bandwidth be as narrow as i want it to be. and i'll just make it the > > width of the frequency spacing of the DTMF frequencies. > > > > take the output of the 8 tone filters, square them, LPF the squared > > signals and do the same for the unfiltered signal to establish > > thresholds, and the rest is pretty easy. i just don't get why this DTMF > > thing is much more than virtually trivial (or "trivially virtual"). > > > > > > -- > > > > r b-j rbj@audioimagination.com > > > > "Imagination is more important than knowledge."
Perhaps its pervasiveness stemmed from early app notes (TI and AD)showing a goertzel based DTMF decoder. At least one early BSTJ article actually modeled their analog receiver in a DSP by using band split filters followed with narrow band filters whose outputs were rectified and then fed to quick attack slow decay filters. One of the difficulties of a Goerztzel based receiver was meeting the twist specs while having a good talk off immunity. Of course once one used DTMF in an overdial situation, the twist specs need to be doubled or more! Clay
Reply by robert bristow-johnson March 24, 20142014-03-24
On 3/24/14 11:08 AM, clay@claysturner.com wrote:
> > Essentially the Goertzel algo recursively computes the DFT of a signal at a single bin frequency by having the signal drive a recursive oscillator. In Goerzel's case the recursion he used in his 1959 paper turns out to be that of a biquad oscillator. Since the Goertzel algo can be generalized to use any 2nd order recursive sinusoidal oscillator ...
this is why i have never been impressed with the use of "Goertzel" (in DTMF or similar tone detection) over some other generalized biquad. and i think that a peaking EQ can make a sharper passband than a basic BPF. maybe not, given the same Q, i dunno i gotta think about it. but i *know* that i can make a peaking EQ have the mid-point dB bandwidth be as narrow as i want it to be. and i'll just make it the width of the frequency spacing of the DTMF frequencies. take the output of the 8 tone filters, square them, LPF the squared signals and do the same for the unfiltered signal to establish thresholds, and the rest is pretty easy. i just don't get why this DTMF thing is much more than virtually trivial (or "trivially virtual"). -- r b-j rbj@audioimagination.com "Imagination is more important than knowledge."
Reply by March 24, 20142014-03-24
On Saturday, March 22, 2014 11:20:24 AM UTC-4, Randy Yates wrote:
> clay@claysturner.com writes: > > > [...] > > > > > > It turns out to be quite easy to implement a sliding goertzel - especially if all you want is the magnitude function. > > > > > > Drive the recursive section of a goertzel with your data. > > > > > > Subtract from that your delayed data times the goertzel matrix raised > > > to the block length power. > > > > What is the "goertzel matrix"? > > -- > > Randy Yates > > Digital Signal Labs > > http://www.digitalsignallabs.com
Randy, Essentially the Goertzel algo recursively computes the DFT of a signal at a single bin frequency by having the signal drive a recursive oscillator. In Goerzel's case the recursion he used in his 1959 paper turns out to be that of a biquad oscillator. Since the Goertzel algo can be generalized to use any 2nd order recursive sinusoidal oscillator and any 2nd order sinusoidal oscillator can be represented by a 2 by 2 matrix, then the "Goerzel matrix" is the 2 by 2 matrix that represents the driven oscillator (resonator). The generalization of the Goertzel algo seems to be unpublished - although I mentioned in my power point presentation from the 2010 "comp.dsp" conference. Perhaps I should publish the derivation? Clay
Reply by Randy Yates March 22, 20142014-03-22
clay@claysturner.com writes:
> [...] > > It turns out to be quite easy to implement a sliding goertzel - especially if all you want is the magnitude function. > > Drive the recursive section of a goertzel with your data. > > Subtract from that your delayed data times the goertzel matrix raised > to the block length power.
What is the "goertzel matrix"? -- Randy Yates Digital Signal Labs http://www.digitalsignallabs.com
Reply by Rick Lyons March 17, 20142014-03-17
On Wed, 12 Mar 2014 00:28:55 -0500, "Stacy" <22429@dsprelated> wrote:

>>Eric Jacobsen >>Anchor Hill Communications >>http://www.anchorhill.com > > >Eric, > >Look what I found. > >http://homepages.cae.wisc.edu/~ece734/references/lyons.pdf
Hi, Regarding Figure 1 in the above PDF file, for some unknown reason the rectangle (box) around the z^(-N) term is missing, as are the circles around the '+' (add) and 'X' (multiply) symbols. Some weeks after that article of mine was published, I received an E-mail from some sort of strange marketing company (Star Positions) asking me at what websites they could find information regarding Swiss Army Knives. They were looking for the knives that have long blades, short blades, screwdrivers, etc. Real Swiss Army Knives!! I called that crazy company and told them that neither I nor the IEEE could help them find real Swiss Army Knives. The funny part is that a week later I received an E-mail from the lunatics at this same company asking me at what websites they could find information regarding Hawaiian shirts!!! Ha ha ha. Ah, the Internet. It's all a little crazy.
> >http://www.cmlab.csie.ntu.edu.tw/DSPCourse/reference/Sliding%20DFT%20update.pdf
The above web page is yet another illegal posting of copyrighted material. [-Rick-]
Reply by robert bristow-johnson March 14, 20142014-03-14
>>> But to overcome a potential error just move the poles just inside of the >>> unit circle and then trash decays away. >> >> and to make it a sliding Goertzel, you have to truncate the impulse >> response that you get, even after moving the poles slightly into stable >> territory. you do that with a Truncated IIR (TIIR) topology. (remember >> that TIIRs are really FIRs implemented with feedback and those two >> barely stable poles will be canceled with zeros. again, for anyone >> interested, i have a 4-page doc that tells you quicky how to slap >> together a TIIR assuming you already know how to do the IIR that's >> getting T'd.) >> >> you don't have to do the TTIR thing if your Goertzel is not sliding, but >> then, every N samples, you have to reset the accumulator. the TIIR >> version is fully LTI. >>
On 3/14/14 10:48 AM, Stacy wrote:
> > I'm interested. I would like to see your 4 page document on implementing > the TIIR topology. >
it's just equations (and their derivation), no figures no "topology", but if you know how to take a transfer function with specified coefficients and turn it into a filter, then it's enough without figures. i'll need an email (mine is not nor ever has been munged to thwart spam). -- r b-j rbj@audioimagination.com "Imagination is more important than knowledge."
Reply by Stacy March 14, 20142014-03-14
>> But to overcome a potential error just move the poles just inside of the
unit circle and then trash decays away.
> >and to make it a sliding Goertzel, you have to truncate the impulse >response that you get, even after moving the poles slightly into stable >territory. you do that with a Truncated IIR (TIIR) topology. (remember >that TIIRs are really FIRs implemented with feedback and those two >barely stable poles will be canceled with zeros. again, for anyone >interested, i have a 4-page doc that tells you quicky how to slap >together a TIIR assuming you already know how to do the IIR that's > >-- > >getting T'd.) > >you don't have to do the TTIR thing if your Goertzel is not sliding, but >then, every N samples, you have to reset the accumulator. the TIIR >version is fully LTI. >
>r b-j rbj@audioimagination.com > >"Imagination is more important than knowledge." >
I'm interested. I would like to see your 4 page document on implementing the TIIR topology. _____________________________ Posted through www.DSPRelated.com
Reply by robert bristow-johnson March 14, 20142014-03-14
On 3/14/14 1:48 AM, clay@claysturner.com wrote:

> But to overcome a potential error just move the poles just inside of the unit circle and then trash decays away.
and to make it a sliding Goertzel, you have to truncate the impulse response that you get, even after moving the poles slightly into stable territory. you do that with a Truncated IIR (TIIR) topology. (remember that TIIRs are really FIRs implemented with feedback and those two barely stable poles will be canceled with zeros. again, for anyone interested, i have a 4-page doc that tells you quicky how to slap together a TIIR assuming you already know how to do the IIR that's getting T'd.) you don't have to do the TTIR thing if your Goertzel is not sliding, but then, every N samples, you have to reset the accumulator. the TIIR version is fully LTI. -- r b-j rbj@audioimagination.com "Imagination is more important than knowledge."
Reply by March 14, 20142014-03-14
Not much worry about numerical issues. Recall a goertzel matrix has a unity determinant and if chosen correctly it is orthogonal or nearly so at the frequency of interest. Hence its condition number is small. It has unity magnitude eigenvalues so raising them to a high power is a simple application of DeMoivre's theorem. But to overcome a potential error just move the poles just inside of the unit circle and then trash decays away. Now you know one of the reasons I've investigated many different oscillator topologies.

Clay
Reply by Tim Wescott March 14, 20142014-03-14
On Thu, 13 Mar 2014 21:17:24 -0400, Randy Yates wrote:

> clay@claysturner.com writes: >> [...] times the goertzel matrix raised to the block length power. > > Numerical issues?
You beat me to it. -- Tim Wescott Wescott Design Services http://www.wescottdesign.com