Dear all,
I have vibration data from a setup in time domain. I need to convert into frequency domain,for which i have coded as below
n=length(data);
ts=t(2)-t(1);
p=abs(fft(data));
p=p(1:n/2).^2;
freq=[1:n/2]/ts;
figure(2)
plot(freq,p)
But the frequency components obtained in the plot, are not matching with actual ones,which i think the error in frequency axis of fft plot.Is any normalisation of axis needed . how to rectify this error .
Regards.

 Réponse acceptée

Arnaud Miege
Arnaud Miege le 19 Avr 2011

0 votes

I would suggest following the example in the fft documentation:
n = length(data);
Ts = t(2)-t(1); % sample time
Fs = 1/Ts; % sampling frequency
NFFT = 2^nextpow2(n); % Next power of 2 from length of data
Y = fft(data,NFFT)/n;
f = Fs/2*linspace(0,1,NFFT/2+1);
% Plot single-sided amplitude spectrum.
plot(f,2*abs(Y(1:NFFT/2+1)))
title('Single-Sided Amplitude Spectrum of y(t)')
xlabel('Frequency (Hz)')
ylabel('|Y(f)|')
HTH,
Arnaud

3 commentaires

shravankumar
shravankumar le 20 Avr 2011
Thank you Arnaud. that helped.
Regards.
Ella
Ella le 1 Déc 2015
Hi Shravankumar do you get the same amplitude of vibration as your time domain ? I tried using the same code to get FFT of my signal but the amplitude drops. How can I solve this ? your suggestion is appreciated
@Ella, Try
data = data - mean(data);
before typing the above code.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Fourier Analysis and Filtering dans Centre d'aide et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by