0

私はStackOverflowで同様の質問を見てきましたが、特にこれに対処しているようには見えません。

2 つの信号間のビンごとの位相差を見つけようとしています。この結果が使用可能かどうかを検証するために、2 つの信号間に 1 つのサンプル遅延を導入しました。

このようなもの:

    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 (pre-fft データ ローテーションまたは post-fft 代替符号フリッピング) を使用して位相比較を試し、より信頼性の高い位相オフセット結果が得られるかどうかを確認します。

于 2014-03-07T19:28:07.107 に答える