FFT plot how to plot frequency

2 visualizaciones (últimos 30 días)
andrei andrei1
andrei andrei1 el 12 de Jun. de 2018
Comentada: Star Strider el 13 de Jun. de 2018
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 comentarios
Star Strider
Star Strider el 12 de Jun. de 2018
See the documentation on fft (link).
You have to create a frequency vector for the plot.
andrei andrei1
andrei andrei1 el 12 de Jun. de 2018
Editada: andrei andrei1 el 12 de Jun. de 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) ?

Iniciar sesión para comentar.

Respuestas (1)

Star Strider
Star Strider el 12 de Jun. de 2018
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 comentarios
andrei andrei1
andrei andrei1 el 13 de Jun. de 2018
Editada: andrei andrei1 el 13 de Jun. de 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?
Star Strider
Star Strider el 13 de Jun. de 2018
The ‘Fv’ variable goes from 0 Hz to the Nyquist frequency, that being half the sampling frequency.

Iniciar sesión para comentar.

Categorías

Más información sobre Spectral Measurements en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2013b

Community Treasure Hunt

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

Start Hunting!

Translated by