When using the fft function in Matlab to take the Fourier transform, one can specify the number of FFT points, nfft, and the command is written fft(x,nfft). In this case, what is the frequency vector?

How can the Fourier transform be calculated with the same nfft, but over a narrower range of frequencies? How would the frequency vector be calculated?

  • $\begingroup$ Check out the Chirp-Z-transform. You can find some information about it in this answer. $\endgroup$ – Matt L. Nov 8 '14 at 22:42

If your sampling frequency is $f_s$, and you calculate the FFT with $N$ samples, then the FFT calculates the signal's spectrum at $N$ frequencies from $-f_s/2$ to $f_s/2-f_s/N$, inclusive. In Matlab notation, this would be written as:

freq_vector = (-N/2:N/2-1)./(f_s/N);

(Note that you have to shift the spectrum returned by the FFT operation to correspond to this vector; in Matlab, you would use fftshift.)

I don't know of any FFT algorithm that lets you restrict the frequency range. I would suggest using Goertzel's Algorithm to find the spectrum at the particular frequencies you're interested in. You may also use a bandpass filter to eliminate the unwanted frequencies before performing the FFT.

| improve this answer | |

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.