Hi all,
I'm new to FFT and I want to ask about calculating FFT in Matlab. The following is my coding guidance from Matlab help:-
clc;
Fs = 512; % Sampling frequency
T = 1/Fs; % Sample time
L = 8100; % Length of signal
t = (0:L-1)*T; % Time vector
% Sum of a 50 Hz sinusoid and a 120 Hz sinusoid
x = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t);
y = x + 2*randn(size(t)); % Sinusoids plus noise
plot(Fs*t(1:50),y(1:50));
title('Signal Corrupted with Zero-Mean Random Noise')
xlabel('time (milliseconds)');
NFFT = 2^nextpow2(L); % Next power of 2 from length of y
Y = fft(y,NFFT)/L;
f = Fs/2*linspace(0,1,NFFT/2);
% Plot single-sided amplitude spectrum.
plot(f,2*abs(Y(1:NFFT/2)));
title('Single-Sided Amplitude Spectrum of y(t)');
xlabel('Frequency (Hz)');
ylabel('|Y(f)|');
Can someone verify my code because the fft graph unconvincing. Here the figure of the graph
Thank you.

5 件のコメント

Walter Roberson
Walter Roberson 2015 年 6 月 19 日
What features of the plot are you seeing as "unconvincing" ?
nur yusof
nur yusof 2015 年 6 月 29 日
the peak.looks not relevant.
Walter Roberson
Walter Roberson 2015 年 6 月 29 日
I am not sure why you say that? You coded
0.7*sin(2*pi*50*t) + sin(2*pi*120*t);
which calls for a 0.7 peak at 50 Hz and a 1.0 peak at 120 Hz. The peaks are visually shown at the correct place, 50 Hz and 120 Hz. When I extract the value of the peak locations I get 0.683776526075202 and 0.986050681728091 . Why not exactly 0.7 and 1.0? Because of the normally distributed random noise with standard deviation 2 that you added, a standard deviation that exceeds the maximum value of the two sines added together (0.7+1). The peaks look relevant to me.
Sag
Sag 2016 年 1 月 26 日
Why to multiply by 2 in step: plot(f,2*abs(Y(1:NFFT/2)));
Afshin Loghmani M Toussi
Afshin Loghmani M Toussi 2020 年 12 月 1 日
Because you are plotting half of the frequency range( because of the symmetry). However, to show the same amount of energy you are multiplying the values by 2.

サインインしてコメントする。

回答 (1 件)

Andreas Goser
Andreas Goser 2015 年 6 月 19 日

0 投票

Frequent puzzlese with interpreting FFT:
2 peaks instead of 1 peak
Frequency "off" by a factor of 6.
Both effects are in the nature of the algorithm and "6" is actually "2*Pi". Next steps depend on whether you want to just use the results, then this will help. If you want to understand, read a text book about signal processing.

1 件のコメント

nur yusof
nur yusof 2015 年 6 月 29 日
thank you so much

サインインしてコメントする。

質問済み:

2015 年 6 月 19 日

Community Treasure Hunt

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

Start Hunting!

Translated by