Fourier Transform - signal

Hello everyone,
I am doing relates to Fourier Transform form signal (as attached) to find the frequency of the signal. But my result is not correct (just I think because the result is so weird), I don't know where am I wrong. Plz help me fix this code.
Thank for your time
t1=0:359;
t=t1';
x = load('tremor_analysis.txt');
plot(t,x)
y = fft(x);
m = abs(y);
p = angle(y);
f = (0:length(y)-1)*359/length(y);
subplot(2,1,1)
plot(f,m)
title('Frequency')
This is my result:

 Accepted Answer

Walter Roberson
Walter Roberson on 21 Dec 2016

0 votes

Remember that the first entry of the output, y(1), will store mean(x)*length(x), which is sum(x). Whenever your data is not centered around 0 you need to expect a peak at y(1).
You can either subtract off the mean(x) before doing the fft() or you can zero out y(1) before plotting.

3 Comments

viet le
viet le on 21 Dec 2016
Edited: viet le on 21 Dec 2016
Sorry, I am not clear. could you explain more detail?
y = fft(x - mean(x));
Not sure what you're unclear about. He showed you one way, by subtracting the mean like he originally said. Or alternatively zeroing out y(1) like this:
y(1) = 0;
plot(y, 'b-');

Sign in to comment.

More Answers (0)

Tags

Community Treasure Hunt

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

Start Hunting!