FFT plot how to plot frequency

hy, i have a set of data, time - velocity. i need to transform it in frequency-amplitude plot. so, i have this code:
load('x.txt');
X=x(:,2);
T=x(:,1);
Xf=fft(X);
l=length(Xf);
D=2*abs(Xf)/l; %%i understand this is the formula to plot exact amplitude
plot(D)
grid on
so.. i have the amplitude on Y axis, but on X axis it shows the time, it is like 2 minutes long in 500000 steps, so, many numbers, and i need to know the amplitudes for the first 50Hz. how can i have Hz= frequency on X axys, cause i don't think is the same at may time 500k+ values. p=plot(T,X)

2 Comments

See the documentation on fft (link).
You have to create a frequency vector for the plot.
andrei andrei1
andrei andrei1 on 12 Jun 2018
Edited: andrei andrei1 on 12 Jun 2018
can you tell me how? it should be function of T, obviously, and should have same length as D. frequency normally is 1/T .. but how to apply that here? maybe.. if T=1:500000 totally meaning 2 minutes, then freq=1:1/500000:1/120*500000) ?

Sign in to comment.

Answers (1)

I would create the frequency vector ‘Fv’ as:
Ts = mean(diff(T)); % Sampling Interval
Fs = 1/Ts; % Sampling Frequency
Fn = Fs/2; % Nyquist Frequency
Fv = linspace(0, 1, fix(l/2)+1)*Fn; % Frequency Vector (For One-Sided Fourier Transform)
Iv = 1:numel(Fv); % Index Vector (For One-Sided Fourier Transform)
Your plot call then changes to:
plot(Fv, D(Iv))
grid on
That should work (providing I did not make any typographical errors).

2 Comments

andrei andrei1
andrei andrei1 on 13 Jun 2018
Edited: andrei andrei1 on 13 Jun 2018
ok, so, for example if T has 500000 values between 0 and 10 seconds, this Fv will have 250001 values cause of the Nyquist mirroring, but the values would be from what frequency to what frequency? how to show on x axis the real values of frequency, and not the full 250001 steps, and how to show frequencys till 50 Hz, plot(Fv(1:50), D(1:50)) is good?
in my method, the x axis was till 250000 bins, and on yours till 25000 bins. these values are in fact 250000 Hz?
The ‘Fv’ variable goes from 0 Hz to the Nyquist frequency, that being half the sampling frequency.

Sign in to comment.

Products

Release

R2013b

Tags

Asked:

on 12 Jun 2018

Commented:

on 13 Jun 2018

Community Treasure Hunt

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

Start Hunting!