0

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

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

像这样的东西:

    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 的随机跳跃。我想知道为什么会发生这种情况,尽管展开了原始信号的相位。

4

1 回答 1

0

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

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

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

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

于 2014-03-07T19:28:07.107 回答