I'm having some problems understanding the FFT. Is the frequency resolution in the spectrum calculated as

$\frac{\textrm{sampling rate}}{\textrm{number of FFT points}}$ or $\frac{\textrm{sampling rate}}{\textrm{0.5 * number of FFT points}}$?

Asking this because the spectrum is symmetric for real-valued inputs. So, say I have $f_s = 1000$ Hz and $N$ = 1024, where $N$ is the number of FFT points. Now, is the frequency resolution $\frac{1000 \textrm{ Hz}}{1024} = 0.9766$ Hz or $\frac{1000 \textrm{ Hz}}{0.5 * 1024} = 1.9531$ Hz?


Suppose you have a signal $x[n]$, with $n \in {0, 1, ... N - 1} $. The same-size DFT is defined by:

$$ X[k] = \sum_{n = 0}^{N-1} x[n] e^{-j\frac{\Large{2 \ \pi n k}}{N}} $$

The frequency resolution is going to be how many Hz each DFT bin represents. This is, as you have noted, given by $\frac{f_s}{N}$.

If on the other hand you had zero-padded your signal, such that $N_{zp}$ is greater than $N$, then a more apt term of frequency granularity is given by $\frac{f_s}{N_{zp}}$

Asking this because the spectrum is symmetric for real-valued inputs.

That is irrelevant. The frequency resolutions/granularities are given by the above.

o, say I have fs=1000 Hz and N = 1024, where N is the number of FFT points. Now, is the frequency resolution 1000 Hz1024=0.9766 Hz or 1000 Hz0.5∗1024=1.9531 Hz?

If your sampling frequency $f_s = 1000$ Hz, and you are taking an $N=1024$ (same-sized) FFT, then your frequency resolution is $\frac{1000}{1024}$, which is equal to 0.9766 Hz/bin. If your $N_{zp} = 1024$ (FFT length after zero-padding), then your frequency granularity is 0.9766 Hz/bin.

  • $\begingroup$ So, in other words: I can just zero-pad a signal of N with another N zeroes and get a "twice as good" a frequency resolution at no expense by taking advantage of the symmetry for real-value FFT? $\endgroup$ – N4ppeL Mar 6 '20 at 10:16

The term "resolution" has multiple meanings. In optics, two lines are resolved only if you can see a gap between them. In graphics, resolution might be related to plot points per inch (or other linear measure).

In order to see, say, a 3 dB drop between two spectral peaks in an FFT result, they would have to be more than 1 FFT result bin apart. Around 2 bins, or a bit more depending on the window function used, are needed to clearly separate 2 adjacent equal magnitude frequency peaks with a clear gap between them. Around 2 Hz resolution, by this measure, for your example.

But if you want to estimate or plot the location of just one frequency peak which is far apart from any other spectral peaks and well above the noise floor, you can often get much finer resolution, than 1 FFT result bin separation, by appropriate interpolation (polynomial, or better yet Sinc). Likely sub 0.5 Hz in your example, but only with a suitably high S/N and separation from any other peaks.

So the answer is yes... depending.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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