MATLAB Answers

How to interpret FFT output signal?

57 views (last 30 days)
Melvin Corvers
Melvin Corvers on 6 Aug 2020
Commented: Rena Berman on 9 Oct 2020
Hi,
I am analyzing a signal using FFT to obtain its frequency spectrum. Raw data is shown below.
The machine should measure at a frequency 0.316 Hz.
Code spectral analysis:
x = t2(:,3);
%x = x-mean(x);
n = length(x);
dt = 3;
fs = 1/dt;
t = (0:n-1)*dt;
y = fft(x);
f = (0:n-1)*(fs/n);
power = abs(y).^2/n;
figure()
plot(f,power)
xlabel('Frequency [Hz]')
ylabel('Power')
grid on
After spectral analysis I end up with two peaks: one at 0 Hz and one at 0.3316 Hz.
If you uncomment the second line you end up with this: a peak at 0.0017 and 0.3316 Hz.
My question is how to interpret the first peak? Has it a physical meaning? I've read somewhere that a large peak at zero frequency means that you have a massive DC offset. What does that mean? And could it be that through discretization the actual value (0.316 Hz) and found value (0.3316 Hz) are slightly different?
  3 Comments
Rena Berman
Rena Berman on 9 Oct 2020
(Answers Dev) Restored edit

Sign in to comment.

Answers (1)

Peng Li
Peng Li on 6 Aug 2020
Based on your code, your sampling frequency is 1/3 Hz. There is no way you can detect a component of 0.316 Hz using 1/3 Hz sampling frequency.
The spectrum is symmetrical to 0 Hz. By default MATLAB gives a shifted spectrum that is symmetrical Fs/2. You can fftshift it or you can simply plot the first half. The second peak on the righthand side is not what you want to detect; it is simply a mirror of the peak on the left hand side.

Tags

Community Treasure Hunt

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

Start Hunting!