Effacer les filtres
Effacer les filtres

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

34 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