我正在使用Matlab中的FFT函数,试图分析旅行波激光模型的输出。该模型的形式为(实数,虚数)和时间域,我的想法是对复杂的输出应用FFT,以获得频率域中的相位和幅度信息。
在展开后,对感兴趣区域的相位进行最佳拟合,然后从相位本身中减去,以尝试消除感兴趣区域内相位的波长依赖性。
然而,尽管相位输出在时间域中与输入有很大的不同,但校正数据的振幅似乎变化很小(如果有的话!)。
尽管相位发生了缩放,但校正数据的振幅似乎变化很小(如果有的话!)。
这个物理上似乎不正确,因为我的理解是去除相位的波长依赖性应该“压缩”脉冲输入,即缩短脉冲宽度但提高峰值。
我的主要问题是我是否没有正确使用逆FFT,或正向FFT或两者都是,还是这类似于窗口化或归一化问题?
抱歉问题描述有些冗长!谢谢。
%load time_domain field data
data = load('fft_data.asc');
% Calc total energy in the time domain
N = size(data,1);
dt = data(2,1) - data (1,1);
field_td = complex (data(:,4), data(:,5));
wavelength = 1550e-9;
df = 1/N/dt;
frequency = (1:N)*df;
dl = wavelength^2/3e8/N/dt;
lambda = -(1:N)*dl +wavelength + N*dl/2;
%Calc FFT
FT = fft(field_td);
FT = fftshift(FT);
counter=1;
phase=angle(FT);
amptry=abs(FT);
unwraptry=unwrap(phase);
在展开后,对感兴趣区域的相位进行最佳拟合,然后从相位本身中减去,以尝试消除感兴趣区域内相位的波长依赖性。
for i=1:N % correct phase and produce new IFFT input
bestfit(i)=1.679*(10^10)*lambda(i)-26160;
correctedphase(i)=unwraptry(i)-bestfit(i);
ReverseFFTinput(i)= complex(amptry(i)*cos(correctedphase(i)),amptry(i)*sin(correctedphase(i)));
end
在手动进行最佳拟合后,现在我已经得到了如上图所示的逆FFT输入。
pleasework=ifft(ReverseFFTinput);
现在我可以从中提取时间域中的相位和幅度信息:
newphasetime=angle(pleasework);
newamplitude=abs(pleasework);
然而,尽管相位输出在时间域中与输入有很大的不同,但校正数据的振幅似乎变化很小(如果有的话!)。
尽管相位发生了缩放,但校正数据的振幅似乎变化很小(如果有的话!)。
这个物理上似乎不正确,因为我的理解是去除相位的波长依赖性应该“压缩”脉冲输入,即缩短脉冲宽度但提高峰值。
我的主要问题是我是否没有正确使用逆FFT,或正向FFT或两者都是,还是这类似于窗口化或归一化问题?
抱歉问题描述有些冗长!谢谢。