i have some polymers characterized by transmission terahertz time domain spectroscopy (THz-TDS).
ive now the time domain data in Excel, with column A being (Delay ps), column B (Reference), column C (Amplitube nA) as follows.
i would like to have "FFT phase of column C" minus "FFT phase of column B", and then plot the phase (after deduction) as a function of frequency.
i am told this could be done by adding
[X,TXT,RAW] = xlsread('yourfile.xls'); xdft = fft(X(:,2)); 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); phi = angle(xdft);
anyway it does not work
the command window shows
??? Error using ==> plot Vectors must be the same lengths.
Error in ==> Untitled at 12 plot(freq,angle(fft(X(:,3)))-angle(fft(X(:,2))))
No products are associated with this question.
Here are the frequencies associated with the output from FFT:
Nt = % Number of time samples Fs = % sample frequency (= 1/dt) df = Fs/Nt; % frequency increment Nyq = Fs/2; % Nyquist frequency
if mod(Nt,2) == 0 % Nt is even freq = ifftshift(-Nyq : df : Nyq-df); else % Nt is odd freq = ifftshift([sort(-1*(df:df:Nyq)) (0:df:Nyq)]); end
Then you can just do a xlim on the plot to zoom in on a specific frequency range.