MATLAB: FFT сигнала к частоте и IFFT обратно во временную область, не совсем первый сигнал

Я пытаюсь воспроизвести изменения на лазерном импульсе ~ 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')

person fysikos6    schedule 03.10.2014    source источник


Ответы (1)


Это потому, что вы изменяете длину БПФ по сравнению с длиной вашей оси времени. Чтобы увидеть это, замените

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

by

nfft=length(Efield);

Вы обнаружите, что цифры 1 и 4 теперь равны, с точностью до погрешностей числовой точности.

person Luis Mendo    schedule 03.10.2014