MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn moreOpportunities for recent engineering grads.

Apply TodayTo resolve issues starting MATLAB on Mac OS X 10.10 (Yosemite) visit: http://www.mathworks.com/matlabcentral/answers/159016

Asked by Passband Modulation on 14 Aug 2012

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

plot(freq,angle(fft(X(:,3)))-angle(fft(X(:,2))))

after

[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.*

Answer by Elige Grant on 14 Aug 2012

Edited by Elige Grant on 14 Aug 2012

Accepted answer

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.

Passband Modulation on 15 Aug 2012

really thx a lot. these are the background info and the related questions on them.

## 2 Comments

Direct link to this comment:http://www.mathworks.com/matlabcentral/answers/45962#comment_94431

Not knowing your data size/shape, I can only offer some suggestions on what to look at. Instead of your plot() command, make a new variable:

Then look at its size compared to the size of freq:

It looks like (from the error) that they are different. You'll need to figure out how to fix this so that you can successfully plot them.

Direct link to this comment:http://www.mathworks.com/matlabcentral/answers/45962#comment_94619

thank you Michael Quinn, but i am not familiar with this. anway thx again.