# Bin spacing in FFTs

I have a signal that I sample at some frequency (currently 100Hz), and want to extract low frequency information (between 0.8 and 3 Hz)

I have three constraints on this:

1. I would prefer to compute FFTs on small data segments, ideally no longer than 5 seconds.
2. I require high resolution on this information - 0.033 Hz between bins or better. I need to accurate resolve the frequencies at this resolution.
3. I do not need to resolve the difference between closely spaced frequencies - just one frequency, accurately.

How do i go about doing this? This page suggests that increasing sample frequency makes things worse, and that i need more points - which i would prefer to avoid. Additionally, This page suggests that 0-padding will not add any actual resolution. How accurate is this?

• The first page you link too (National Instruments) is talking about zero-padding not about increasing the sampling frequency. Could you explain why and how you're sampling at a variable frequency rate? One possibility is to use an adaptive notch filter - the frequency could be read directly from the filter parameters, but I doubt this would work with a variable sample rate. – David Oct 17 '16 at 12:40
• The page discusses how zero padding doesn't add spectral resolution in the fft, which is not the same as sampling frequency. With regard to the sampling frequency, I was trying to express that i can change it if needed, but it does not vary - apologies for the lack of clarity, and edited to reflect – Mauvai Oct 17 '16 at 14:22

Zero-padding an FFT does not add frequency estimation resolution in the presence of adjacent interference or noise. However the frequency estimation resolution it can add for isolated narrow frequency peaks is similar to high quality interpolation (for instance, windowed Sinc reconstruction) of the FFT results, which can add significant "between bin" estimation resolution if the signal-to-noise ratio is (a-priori known to be) sufficiently high.

But, beware of a problem in using a zero-padded FFT for frequency estimation of very low frequency signals. The FFT of any strictly real input includes a complex conjugate image in the mirrored half of the result. Thus, signals near the DC or Fs/2 FFT result bins of an FFT have a nearby complex conjugate image peak. This constitutes an interfering adjacent frequency peak, which can be close enough to create a situation which requires resolving (e.g. separating) adjacent frequency peaks, which zero-padding an FFT does not improve.

However for a known single isolated pure sinusoid in Gaussian noise, a parametric estimator may be more suitable than an FFT, since more is known about the signal.

• How near to the edges does this occur? My signal is neither a pure sinusoid nor in Gaussian noise, so in the absence of further knowledge a padded FFT is probably easiest for me. Though i may switch to this sinc interpolation i keep reading about if performance is an isue – Mauvai Oct 17 '16 at 14:27

Interpolating will not increase resolution. For only 5 seconds you only get 0.2 Hz resolution regardless of interpolation or how fast you'll sample. You want resolution you have two choices. Either increase the observation window to 30 seconds or more. Or. Use super resolution spectral estimation methods (not DFT). Like MUSIC, Capon, AR(MA) etc.

• If i have an isolated signal can i not zero pad to more accurately resolve the single frequency? – Mauvai Oct 17 '16 at 14:59
• No. Zero padding means sinc interpolation. This will not increase the resolution. Try it. Very easy to simulate. – Nir Regev Oct 17 '16 at 15:03