X-axis for Fast Fourier Transformation

9 views (last 30 days)
Ronald Tan
Ronald Tan on 20 Oct 2018
Answered: Star Strider on 20 Oct 2018
Hello everyone,
I have a set of .csv files containing about 20,000 lines each. The first column is a time interval (10ms each) and the second, third and forth columns are for X, Y, and Z axes data respectively.
I've been having problems with the x-axis of my intended outcome. Have been getting warning message: Warning: Imaginary parts of complex X and/or Y arguments ignored
I've tried having the x-axis as 1/t, 1/10 and quite some other inputs but am still not able to get what i hope to get.
Hope that I could get some guidance on this.
Thank you in advance! :)
if true
% code
end
t=Data1(:,1);
x=Data1(:,2);
y=Data1(:,3);
z=Data1(:,4);
XX=fft(x);
YY=fft(y);
ZZ=fft(z);
DataFFT(:,1)= t;
DataFFT(:,2)= XX;
DataFFT(:,3)= YY;
DataFFT(:,4)= ZZ;
csvwrite(fullfile(folderSource,'FFT.csv'), DataFFT);
subplot(3,1,1);
plot(t,XX);
title('X-Axis');
subplot(3,1,2);
plot(t,YY);
title('Y-Axis');
subplot(3,1,3);
plot(t,ZZ);
title('Z-Axis');
end

Answers (1)

Star Strider
Star Strider on 20 Oct 2018

I am not certain what you are doing, or what you want.

I usually create frequency vectors (the x-axis for a Fourier transform plot) this way:

Ts = mean(diff(t));                                     % Sampling Interval
Fs = 1/Ts;                                              % Sampling Frequency
Fn = Fs/2;                                              % Nyquist Frequency
Fv = linspace(0, 1, fix(numel(t)/2)+1)*Fn;              % Frequency Vector
Iv = 1:numel(Fv);                                       % Index Vector (For One-Sided FFT Plots)

The plots would then be:

plot(Fv,XX(Iv))
title('X-Axis')

or:

plot(Fv,abs(XX(Iv))*2)
title('X-Axis')

depending on what you want, and similarly for the others.

See the documentation on fft (link) for details.

Community Treasure Hunt

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

Start Hunting!