Why is my graph from my IFFT not working?

5 次查看(过去 30 天)
I have an initially electric field in the frequency domain that I am trying to get into the time domain with an ifft, and compare that to the analytically calculated graph that I am suppose to get. Although, when I plot the ifft it looks nothing like what I am suppose to be getting.
% Constants
c = 299792458; % speed of light in a vacuum
FWHM = 30e-15; % pulse duration
T = FWHM/(2*(sqrt(log(2)))); % (T=tau)
lambda0 = 800e-9; % central wavelength
w0 = (2*pi*c)/lambda0; % central angular frequency
phi_w = 0; % phase (in time or freqency)
eta = 0; % chirp (2nd derivitive of phase)
% electric field and intensity in wavelength domain
nfft = 2^12;
lambda = (740e-9:((120e-9)/(nfft-1)):860e-9);
w = (2.*pi.*c)./lambda;
E_w = (1/(sqrt((1/T.^2)+i*eta)))*exp((-(w-w0).^2)/((2/T.^2)+2*i*eta));
I_lambda= (abs(E_w)).^2;
% IFFT
dw = w(2)-w(1); % difference in frequency
ifftE_t =(ifft(E_w))*dw; % ifft
Ts = 1/dw; % sampling time
dt = Ts/length(E_w); % difference in sampling time
time = -Ts/2+dt:dt:Ts/2; % time
% (test to see if inverse fourier matches)
t = -100e-15:1e-15:100e-15;
PE_t =exp((-t.^2/(2*T.^2)) + (i*w0*t-(1/2)*i*eta*t.^2)); %*phi_t));
% PLOT
subplot(3, 1, 1);
plot(lambda, I_lambda);
title('Gaussian Pulse Signal');
xlabel('Wavelength');
ylabel('I_\lambda');
subplot(3, 1, 2)
plot(time, real(ifftE_t))
set(gca,'xlim',[-1 1]);
subplot(3, 1, 3);
plot(t, PE_t)
xlabel('t');
ylabel('I_t');
  1 个评论
Jan
Jan 2013-7-5
@Joe: Please note that we cannot guess, what you are supposed to be getting. Therefore we cannot guess the difference between the results of your code and your expectations.

请先登录,再进行评论。

采纳的回答

Matt J
Matt J 2013-7-5
编辑:Matt J 2013-7-5
Your dw, and hence also your Ts, are negative,
>> dw, Ts
dw =
-1.0080e+11
Ts =
-9.9209e-12
Your frequency samples w(i) are also non-uniformly spaced, which throws the use of FFTs into question. FFTs are approximations to continuous Fourier transforms only when the data is uniformly sampled.
Finally, be mindful that your frequencies are interpreted as Hertz by MATLAB, not radian frequency.

更多回答(0 个)

标签

Community Treasure Hunt

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

Start Hunting!

Translated by