In order to detect a frequency component of 1 Hz with a DFT - do I need a signal window (signal in time domain) of at least 1 second length (in order to have at least 1 cycle of the desired minimal frequency I want to detect)?

Or is it possible to evaluate the spectrum of low frequencies with short signal windows (in seconds - independent of sampling frequency)?


1 Answer 1


If you want to detect a frequency with a DFT, yes, you'll need an integer number of signal periods in your observation. The smallest useful integer is 1.

On the other hand, why use the DFT to detect a single frequency? Aside from the obvious "use Goertzel if you only care about a single frequency", which would only lead you to a filter of the same length as said DFT, you could use one of many parametric and non-parametric frequency estimators.

A simple low- or bandpass-filter might totally do it, depending on your application!

Other estimators for when you know where you want to evaluate the spectrum include the MUSIC algorithm (which can be really low complexity if you know there's exactly one tone in your signal, and you know your SNR is OK), or very simple fast segmented autocorrelation methods.

  • $\begingroup$ Thanks for your advice :-) Could you give me a hint where I find more info on the autocorrelation methods you mentioned? Some keywords to help me move ahead. $\endgroup$
    – Andreas
    Dec 13, 2020 at 22:57
  • $\begingroup$ "fast autocorrelation", really, and then look for max_index(abs(autocorrelation))) $\endgroup$ Dec 13, 2020 at 23:15
  • $\begingroup$ @Andreas AFAIK, fast autocorrelation or cross-correlation is implemented by using FFT. Check here Efficiently calculating autocorrelation using FFTs $\endgroup$
    – ZR Han
    Jan 13, 2021 at 2:19

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.