1

我正在尝试重现约 30 飞秒激光脉冲的变化。我及时创建并显示这个脉冲就好了。此外,该脉冲的 fft 在 matlab 上表现良好(中心频率和宽度非常好)。但是当我使用 ifft() 函数对转换后的信号进行反向转换时,脉冲会及时移动(可能是由于相位变化??我不知道),并且峰值最大值也不同。这可能是什么原因? 我以错误的方式使用ifft?

我正在使用的代码是这样的:

    atto=1e-18;
c = 299792458;
femto=1e-15;
lamda0=800e-9;
f_0=c/lamda0;
omega0=2*pi*c/lamda0;
T=2*pi/omega0;
a=2*log(2)/((36.32*femto)^2);
Fs=3/atto; %samplying rate
t=-200*femto:1/Fs:200*femto;
Efield=exp(-a.*(t-T).^2).*exp(1j.*omega0.*(t-T));

nfft=2^nextpow2(length(Efield));
Efieldfft=fft(Efield,nfft);
f=(0:nfft-1)*Fs/nfft;
omega=2*pi*f;
figure(1)
plot(t,Efield)
xlabel('s [fs]')
ylabel('Amplitude')

figure(2)
plot(omega,abs(Efieldfft))
xlim([2e15 2.8e15])
xlabel('omega [rad]')
ylabel('Amplitude')

figure(3)
plot(f,abs(Efieldfft))
xlim([3.3e14 4.1e14])
xlabel('frequency [Hz]')
ylabel('Power')

test=ifft(Efieldfft,length(t));

figure(4)
plot(t,test)
xlabel('s[fs]')
ylabel('amplitude')
4

1 回答 1

4

那是因为与时间轴的长度相比,您正在修改 FFT 的长度。要看到这一点,请更换

nfft=2^nextpow2(length(Efield));

经过

nfft=length(Efield);

您会发现图 1 和图 4 现在相等,直至数值精度误差。

于 2014-10-03T10:54:36.853 回答