使用FFT-2pi的Bin智能相位差甚至在使用相位展开后也会发生偏移

时间:2014-03-07 06:07:19

标签: fft phase

我在 StackOverflow 上看过类似的问题,似乎没有人专门解决这个问题。

我试图找到两个信号之间的bin智能相位差。为了验证这个结果是否可用,我在两个信号之间引入了一个采样延迟。

这样的事情:

    ch1 = randn(frame_length * 100, 1);
    ch2 = [0 ; ch1(1:end-1) ];

然后我窗口信号,取FFT并绘制相位差。像这样:

    phase_1 = unwrap(arg(bin_wise_struct.fft_out_ch1));
    phase_2 = unwrap(arg(bin_wise_struct.fft_out_ch2));
    phase_diff = (phase_1 - phase_2);

但是我注意到最终的相位差有2 * pi的随机跳跃。我想知道为什么会发生这种情况,尽管打开了原始信号的相位。

1 个答案:

答案 0 :(得分:0)

如果不将FFT相位参考中心(通过使用fftshift)而不是前/后边缘,那么任何信号不连续的相位(在FFT孔径的开始和结束之间) )在FFT结果箱之间交替。

展开可能会使标志翻转并添加2pi。

相位符号交替,因为FFT正在尝试测量Sinc函数的相位,该函数表示任何非周期性孔径数据中的矩形窗口。一个fftshift“扭曲”复杂的Sinc函数,因此它的相位不再交替。

尝试使用fftshift进行相位比较(pre-fft数据旋转或post-fft交替符号翻转),看看是否会产生更可靠的相位偏移结果。