【问题标题】:Complex FFT then Inverse FFT MATLAB复 FFT 然后逆 FFT MATLAB
【发布时间】:2012-08-12 19:37:59
【问题描述】:

我正在使用 Matlab 中的 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 或两者兼而有之,还是这类似于窗口化或归一化问题?

很抱歉这个冗长的问题!并提前致谢。

【问题讨论】:

  • 我建议您还绘制频域中的幅度和相位以及它们在操作后如何变化(ReverseFFTInput)。
  • ReverseFFTInput 是执行相位修改后傅里叶逆变换的复数输入。它已经在频域,'ifft()'函数显示了ReverseFFTinput在时域中的分量
  • 我想表达的是你只在时域中绘图。您还应该在 fft() 之后和 ifft() 之前在频域中绘图,以查看您对频域中的信号施加的变化。就像他们在这里为 2D 信号所做的一样:cs.unm.edu/~brayer/vision/fourier.html
  • 您能否分享一个指向“fft_data.asc”文件的链接,以便重现您的结果?
  • docs.google.com/open?id=0B8N_x95j5pgaall2Vk1QMTlZTE0 @EitanT 当然我可以这里是链接。感谢您的宝贵时间!

标签: matlab transform fft inverse


【解决方案1】:

您实际上看到了两种效果。

首先是预期的。您说的是“消除相位的波长依赖性”。如果你确实这样做了——将相位完全归零——你实际上会得到一个略微压缩的峰值。 您实际上所做的是向相位添加一个线性函数。这不会压缩任何东西;这是一个众所周知的变换,相当于在时域中移动峰值。只是傅里叶变换的教科书性质。

然后是无意的。您将使用fft 获得的频谱转换为fftshift 以获得更好的显示效果。因此,在使用ifft 将其转换回来之前,您需要先应用ifftshift。如您所不,频谱在频域中有效地移动。这会导致您的时域相位被添加为时间的线性函数,因此过去接近于零的相邻点之间的差异现在约为 pi。

【讨论】:

  • 这是否意味着对展开的相位进行最佳拟合并从实际相位中减去该值不是尝试压缩脉冲的有效方法?
  • 我的印象是,在光谱范围内的脉冲范围内将波长对相位的依赖性变成一个常数(或尽可能接近)会减少啁啾,从而压缩峰值?
  • 一般来说,是的,它会的。但是,您正在拟合线性函数,但线性求和不会改变峰形。如果需要对其进行压缩,则需要使用非线性函数进行逼近。线性的对这个任务没有用。
  • 如果啁啾内的相位与波长呈线性关系会怎样?
  • 如果相位是线性 w.r.t.波长,您的峰值已经处于可能的最压缩状态。
猜你喜欢
  • 2012-04-30
  • 1970-01-01
  • 2018-07-12
  • 2011-12-07
  • 2015-08-20
  • 1970-01-01
  • 2013-05-22
  • 2015-11-15
  • 2018-03-16
相关资源
最近更新 更多