How do i convert time domain data into frequency domain?
12 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Dhyan Hariprasad
le 18 Avr 2017
Commenté : noran omar
le 28 Avr 2019
I have vibration data from an accelerometer. In forst image I have plotted timeperiod and amplitude. For doing fft, I did fft(amplitude) X=fft(amplitude); plot(Timeperiod,abs(X),'r'); How can I convert time to frequency.
0 commentaires
Réponse acceptée
Star Strider
le 18 Avr 2017
See the documentation on fft (link), particularly the code between the first (top) two plot figures. That will show you how to calculate the frequency vector and correctly plot the Fourier transform.
3 commentaires
Star Strider
le 19 Avr 2017
My pleasure.
There have been discussions of the legality of copying and posting sections of code here, and I’m not certain if that extends to the documentation. I will remove the code and change this Comment if copying the documentation code is a problem. (I’ve posted my own code that closely resembles this code in several of my Answers, so I doubt it its a problem.)
From the Documentation —
Fs = 1000; % Sampling frequency
T = 1/Fs; % Sample time
L = 1000; % Length of signal
t = (0:L-1)*T; % Time vector
% Sum of a 50 Hz sinusoid and a 120 Hz sinusoid
x = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t);
y = x + 2*randn(size(t)); % Sinusoids plus noise
figure(1)
plot(Fs*t(1:50),y(1:50))
title('Signal Corrupted with Zero-Mean Random Noise')
xlabel('time (milliseconds)'
NFFT = 2^nextpow2(L); % Next power of 2 from length of y
Y = fft(y,NFFT)/L;
f = Fs/2*linspace(0,1,NFFT/2+1);
% Plot single-sided amplitude spectrum.
figure(2)
plot(f,2*abs(Y(1:NFFT/2+1)))
title('Single-Sided Amplitude Spectrum of y(t)')
xlabel('Frequency (Hz)')
ylabel('|Y(f)|')
I added the figure designations to prevent the second plot from overwriting the first when you run this.
noran omar
le 28 Avr 2019
star strider,
i need to understand why did you devide by the length at 'Y = fft(y,NFFT)/L;' and also why to devide by 2*linspace(0,1,NFFT/2+1) in 'f = Fs/2*linspace(0,1,NFFT/2+1);'. thank you for your help.
Plus de réponses (0)
Voir également
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!