# How can I get the FFT (Amplitude - Frequency) from Time (s) - Acceleartion(m/s^2) data?

21 views (last 30 days)
Bob on 21 Mar 2016
Commented: Star Strider on 21 Mar 2016
clc;
clear all;
close all;
Time = xlsread('Data','A2:A513'); % Time (s)
Acceleration = xlsread('Data','B2:B513'); % Acceleration (m/s^2)
n = length(Acceleration);
Ts = Time(2)-Time(1); % Sample Time
Fs = 1/Ts; % Sampling Frequency
NFFT = 2^nextpow2(n); % Next power of 2 from length of data
Y = fft(Acceleration,NFFT)/n;
f = Fs/2*linspace(0,1,NFFT/2+1);
plot(f,Y)
xlabel('Frequency (Hz)')
ylabel('Amplitude (m)')
I am trying to get the FFT from Time Acceleration Data.
Error using plot
Vectors must be the same length.
P.S I have attached the Data.xlsx

Star Strider on 21 Mar 2016
In your code, ‘f’ is half the length of ‘y’ so you need to create an ‘index vector’.
Try this:
... CODE ...
Y = fft(Acceleration,NFFT)/n;
f = Fs/2*linspace(0,1,NFFT/2+1);
Iv = 1:length(f); % Index Vector
plot(f,abs(Y(Iv)))
xlabel('Frequency (Hz)')
ylabel('Amplitude (m)')
That should work.
Star Strider on 21 Mar 2016
My pleasure.