Filter löschen
Filter löschen

How do i convert time domain data into frequency domain?

12 Ansichten (letzte 30 Tage)
Dhyan Hariprasad
Dhyan Hariprasad am 18 Apr. 2017
Kommentiert: noran omar am 28 Apr. 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.

Akzeptierte Antwort

Star Strider
Star Strider am 18 Apr. 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 Kommentare
Star Strider
Star Strider am 19 Apr. 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
noran omar am 28 Apr. 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.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Fourier Analysis and Filtering finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by