Effacer les filtres
Effacer les filtres

FFT and sin wave

5 vues (au cours des 30 derniers jours)
i Venky
i Venky le 11 Oct 2011
A small doubt in signal processing. When you take fft of a signal -- k=fft(y,512); and plot it, we get 512 points. I want to represent the 'x' axis in Hz . How would you do that? For eg: if k=40 what is the the corresponding frequency in Hz for a 512 point FFT?

Réponse acceptée

Wayne King
Wayne King le 11 Oct 2011
If the signal is real-valued:
t = 0:.001:1-0.001;
Fs = 1e3;
x = cos(2*pi*100*t)+randn(size(t));
xdft = fft(x);
xdft = xdft(1:length(x)/2+1);
freq = 0:Fs/length(x):Fs/2;
plot(freq,abs(xdft));
xlabel('Hz');
  1 commentaire
Wayne King
Wayne King le 11 Oct 2011
Frequencies are spaced at Fs/N where Fs is the sampling frequency and N is the length input signal.

Connectez-vous pour commenter.

Plus de réponses (2)

i Venky
i Venky le 11 Oct 2011
This is okay when the no of points in the fft is same as that of the length of the input signal. When I change the no of points in the fft. For eg: in your code if I change xdft=fft(x) into xdft=fft(x,512), what should be the change that I should make to get the frequency in Hz?

i Venky
i Venky le 11 Oct 2011
I got it.
Frequency in Hz= k * Sampling frequency (in time domain)/ N
Where 'N' is the no of points in the FFT.
  1 commentaire
Wayne King
Wayne King le 11 Oct 2011
Yes, but just keep in mind that the frequency resolution of your DFT is determined by the length of your input signal, NOT by the value of any zero padding. Zero padding just interpolates your DFT, it does not give you any better resolution.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Fourier Analysis and Filtering dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by