Filter löschen
Filter löschen

Getting the magnitude of FFT of a sine wave

63 Ansichten (letzte 30 Tage)
Nina
Nina am 18 Feb. 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.

Antworten (1)

Wayne King
Wayne King am 18 Feb. 2013
Bearbeitet: Wayne King am 18 Feb. 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 Kommentare
Wayne King
Wayne King am 18 Feb. 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 am 18 Feb. 2013
Oh I see, thank you :)

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Fourier Analysis and Filtering finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by