"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.