MATLABで2つの信号間の位相差を計算するにはどうすればよいですか?


答え 1:

位相の違いが調べるのに有用なパラメータであるという信号について一般的なことは何ですか? 私たちは、周波数の関数として位相プロファイルを見ていると仮定しています。 思い浮かぶ1つの例は、3つの異なる設計基準に対するフィルターインパルス応答のスペクトルの位相比較です。 最小位相、線形位相、最大位相と言います。 対数振幅応答はまったく同じですが、3つの異なる位相応答を持つFIRフィルターを設計できます。 フィルター設計を教えるときにこれを行い、学生に線形フェーズとは対照的に最小フェーズが何であるかを教えます。最大フェーズは完全性のためです。 Parks McLellan(Remez)アルゴリズムを使用してローパスフィルターを設計し、単位円の外側のゼロを内側の逆ゼロに折り返して最小位相フィルターを形成し、逆に、内側のゼロを外側のゼロに折り畳んで形成します最大位相フィルター。 次に、3つのフィルターすべてのインパルス応答、それぞれのスペクトルの大きさ、およびラップされていない位相応答(DCで調整)を表示します。 それらがそれぞれの名前を持っている理由を明確に示しています。 matlabコードを必要とする人は誰でもサンプルを送信できます。

フレッド・ハリス


答え 2:

Use [corr.lags] = xcorr; 相互相関を行う; 最大ピークインデックスを見つけます、[〜、ix] = max(corr); delay = lags(ix); これにより、サンプルのtoシグナルsの差が得られます。 信号の周期に基づいてラジアン(または何でも)に変換します。IFN_sigは周期内のサンプル数です。

phase_deg = 2 * pi * delay / N_sig; degの場合は360 * delay / N_sig。