2014-10-03 1 views
1

Я пытаюсь воспроизвести изменения на фемтосекундном лазерном импульсе ~ 30. Я создаю и показываю этот импульс во времени как раз отлично. Кроме того, fft этого импульса apperas тонкий на matlab (центральная частота и ширина очень тонкие). Но когда я переформатировал преобразованный, используя функцию ifft(), импульс перемещается во времени (возможно, из-за изменения фазы, я не знаю), а также максимальные максимумы различны. Что может быть причиной этого ? Я использую ifft неправильно?MATLAB: FFT сигнал на частоту и 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

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

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

по

nfft=length(Efield); 

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

 Смежные вопросы

  • Нет связанных вопросов^_^