how to use FFT in matlab using imported data in time domain excel file

3 vues (au cours des 30 derniers jours)
Passband  Modulation
Passband Modulation le 12 Août 2012
Commenté : Gagan Jain le 17 Déc 2021
i have some polymers characterized by transmission terahertz time domain spectroscopy (THz-TDS).
  1 commentaire
Gagan Jain
Gagan Jain le 17 Déc 2021
Can you please tell where did you extract that data from? I’m doing a similar project

Connectez-vous pour commenter.

Réponse acceptée

Wayne King
Wayne King le 12 Août 2012
Import the data into MATLAB using xlsread()
Your data will be a Nx2 matrix in MATLAB with the first column the time data and the second column the data you want to Fourier transform.
So for example:
[X,TXT,RAW] = xlsread('yourfile.xls');
xdft = fft(X(:,2));

Plus de réponses (2)

Wayne King
Wayne King le 12 Août 2012
Modifié(e) : Wayne King le 12 Août 2012
There is a slight variation depending on whether you have an even or odd number of samples in your data.
Even length:
xdft = fft(X(:,2));
% sampling interval -- assuming equal sampling
DT = X(2,1)-X(1,1);
% sampling frequency
Fs = 1/DT;
DF = Fs/size(X,1);
freq = 0:DF:Fs/2;
xdft = xdft(1:length(xdft)/2+1);
plot(freq,abs(xdft))
Odd length
xdft = fft(X(:,2));
% sampling interval -- assuming equal sampling
DT = X(2,1)-X(1,1);
% sampling frequency
Fs = 1/DT;
DF = Fs/size(X,1);
freq = 0:DF:Fs/2;
xdft = xdft(1:round(length(x)/2));
plot(freq,abs(xdft))
  4 commentaires
Mathias
Mathias le 25 Fév 2017
This doesn't seem to work for me. But why not just use the length of freq?
xdft = xdft(1:length(freq));
Sahaphol Hamanee
Sahaphol Hamanee le 14 Fév 2018
Modifié(e) : Sahaphol Hamanee le 14 Fév 2018
Hi Wayne King, thank you for your guidance. May I ask what DF = Fs/size(X,1); is for? What is the meaning of it? It is the only thing I didn´t understand.
Best Regards

Connectez-vous pour commenter.


Wayne King
Wayne King le 13 Août 2012
Modifié(e) : Wayne King le 13 Août 2012
To get the phase, use angle()
phi = angle(xdft);
To export the frequencies and magnitudes back to Excel, place them in a matrix.
Xdftmatrix = [freq' abs(xdft)];
then use xlswrite
  1 commentaire
Wayne King
Wayne King le 13 Août 2012
Modifié(e) : Wayne King le 13 Août 2012
phi = angle(xdft);
plot(freq,phi)
You want to plot the phase as a function of frequency

Connectez-vous pour commenter.

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by