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

3 vues (au cours des 30 derniers jours)
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

Réponse acceptée

Star Strider
Star Strider le 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.
  4 commentaires
Bob
Bob le 21 Mar 2016
Ok, thanks for your answer.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Fourier Analysis and Filtering dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by