What are the frequencies when N in fft(x,N) is odd?

I know when N is even, fft(x,N) corresponds to frequencies 0,df,...,N/2*df,-(N/2-2)*df,...,-df.
What about if N is odd?

 Risposta accettata

Honglei Chen
Honglei Chen il 10 Lug 2014
Modificato: Honglei Chen il 10 Lug 2014
In general, you can do it as
f = (0:N-1)*fs/N
If you want to map it to negative frequencies
if N is even
f(N/2+1:end) = f(N/2+1:end)-fs % sample -fs/2
or
f(N/2+2:end) = f(N/2+2:end)-fs % sample fs/2
if N is odd
f((N+1)/2+1:end) = f((N+1)/2+1:end)-fs
HTH

5 Commenti

why there are different two for even N?
Honglei Chen
Honglei Chen il 10 Lug 2014
Modificato: Honglei Chen il 10 Lug 2014
-fs/2 and fs/2 are the same point due to periodicity. The difference is really just which one you want to display in your axis
the output of fft is unique, but in the two formulae, the f axis is shifted by one point.
Honglei Chen
Honglei Chen il 10 Lug 2014
Modificato: Honglei Chen il 10 Lug 2014
That's not true. Only one point is changed, from fs/2 to -fs/2 and because the result is periodic, they are indeed the same so you can mark it either way
To be clear, if you are using fftshift on your FFT data and N is even, use the first option (repeated here):
f(N/2+1:end) = f(N/2+1:end)-fs % sample -fs/2

Accedi per commentare.

Più risposte (1)

if x is ampled at fs you can generate frequency vector use
freqvec=linspace(0,fs,N);

3 Commenti

I don't think so. The negative frequencies are missing.
This is incorrect. linspace always sample the last one, which you don't want.
@Honglei Chen Hi, can i know why last sample should not be taken into?

Accedi per commentare.

Categorie

Richiesto:

il 10 Lug 2014

Commentato:

il 4 Giu 2024

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by