Reply by Jon Harris August 27, 20052005-08-27
"Ronald H. Nicholson Jr." <rhn@mauve.rahul.net> wrote in message 
news:deqe1n$6br$1@blue.rahul.net...
> There's been a fair amount of discussion in this newsgroup about the > various ways to measure the frequency of a tone burst (time between zero > crossings, interpolated fft, padded fft, phase vocoder, autocorrelation, > etc.), given the assumption of its presence somewhere in time. > > How about the flip side of the time-frequency trade-off, the various > algorithms to measure the location of a tone burst in time (e.g. when > it start or stops and/or its duration), given that you know its > approximate frequency? > > One simple way is to emulate an old-fashioned analog method: a bandpass > filter, a rectifier (absolute value), a low-pass or averaging filter, > and some sort of threshold detector. Are there better methods (in terms > of accuracy, noise rejection, compute efficiency, etc.)? What google > search terms would one use to find papers on such algorithms?
One thing that comes to mind is the Goertzel algorithm. The modified version, which ignores phase and just computes magnitude, is very computationally efficient (about the same as a second order IIR filter). And basically you get the bandpass filter, rectifier and averaging filter all in one. One possible downside is that it is a block-based algorithm, so your time resolution is going to be limited to your block size (basically, you get one magnitude output per block). Furthermore, in terms of noise rejection, the longer the block, the narrower the filter is (better noise rejection), but of course the worse your time resolution is. So that is an inherit trade-off. There is also a sliding version of the Goertzel algorithm, which would give you an magnitude output every sample. Perhaps that would be a better choice if you need a high degree of time accuracy? -- Jon Harris SPAM blocker in place: Remove 99 (but leave 7) to reply
Reply by Ronald H. Nicholson Jr. August 27, 20052005-08-27
There's been a fair amount of discussion in this newsgroup about the
various ways to measure the frequency of a tone burst (time between zero
crossings, interpolated fft, padded fft, phase vocoder, autocorrelation,
etc.), given the assumption of its presence somewhere in time.

How about the flip side of the time-frequency trade-off, the various
algorithms to measure the location of a tone burst in time (e.g. when
it start or stops and/or its duration), given that you know its
approximate frequency?

One simple way is to emulate an old-fashioned analog method: a bandpass
filter, a rectifier (absolute value), a low-pass or averaging filter,
and some sort of threshold detector.  Are there better methods (in terms
of accuracy, noise rejection, compute efficiency, etc.)?  What google
search terms would one use to find papers on such algorithms?


Thanks.
-- 
Ron Nicholson   rhn AT nicholson DOT com   http://www.nicholson.com/rhn/ 
#include <canonical.disclaimer>        // only my own opinions, etc.