Effacer les filtres
Effacer les filtres

Getting the magnitude of FFT of a sine wave

63 vues (au cours des 30 derniers jours)
Nina
Nina le 18 Fév 2013
I am new to fft and a bit confused about the magnitude. This is what I have
A =1;
t = 0:0.01:1-0.01;
x = A*cos(2*pi*10*t);
xdft = fft(x,1024);
When I plot abs(xdft) I get a magnitude of the length of the wave * amplitude /2. I am confused because I though the magnitude would be 1024*A/2. What am I missing? also since I am trying to learn fft and understand the output it spits out very well, can someone direct me to a good source to start with? Thank you.

Réponses (1)

Wayne King
Wayne King le 18 Fév 2013
Modifié(e) : Wayne King le 18 Fév 2013
You should not zero pad here because as is your frequency of 10 Hz falls directly on a DFT bin.
A =1;
t = 0:0.01:1-0.01;
x = A*cos(2*pi*10*t);
xdft = fft(x);
plot(abs(xdft))
Your data, x, is 100 samples in length. So you get 100*A/2 at -10 Hz and +10 Hz. That is equal to 50.
The zero pad length does not affect the amplitude, just the length of the data vector.
You can of course do:
xdft = fft(x)/length(x);
plot(abs(xdft))
  3 commentaires
Wayne King
Wayne King le 18 Fév 2013
I did in my example above, you wrote fft(x,1024) that is padding out to 1024. I wrote just fft(x)
Nina
Nina le 18 Fév 2013
Oh I see, thank you :)

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