[Numpy-discussion] zoom FFT with numpy?

Charles R Harris charlesr.harris at gmail.com
Thu Mar 15 00:59:17 EDT 2007


On 3/14/07, Ray Schumacher <subscriber100 at rjs.org> wrote:
>
> On 3/14/07, "Charles R Harris" wrote:
>
> > Sounds like you want to save cpu cycles.
> > How much you can save will depend
> > on the ratio of the bandwidth to the nyquist.
>
> The desired band is rather narrow, as the goal is to determine the f of a
> peak that always occurs in a narrow band of about 1kHz around 7kHz
>
> >2) frequency shift, {low pass}, and downsample
>
> > Much depends on the length of the data run and what the signal to noise
> is.
>
> data is stable for 2-4k samps, and s/n is low, ~5-10
>
> > Google indicates that the zoom fft is 2 without the low pass, which is
> fine
> if you don't need optimum s/n in the result.
>
> What I had been doing is a 2048 N full real_FFT with a Hann window, and
> further analyzing the side lobe/bin energy (via linear interp) to try to
> more precisely determine the f within the peak's bin. (How legitimately
> valuable that is I'm not sure... IANAM)


That's usually fine. You might want to zero fill to get more samples through
the band. It would help if you gave the sample frequency in Hz too. Anyway,
unless time is important, I would just zero fill by a factor of 4-8 and
transform. You can get the same effect with a chirp-z transform, but again
this is depends on how much programming work you want to do. If you just
have a couple of lines in the band that you want to locate you could also
try maximum entropy methods.

Chuck
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20070314/abb27bf0/attachment.html>


More information about the NumPy-Discussion mailing list