
コヒーレンス、パワースペクトル、クロスパワースペクトルは、信号処理において2つの信号の関係性を周波数領域で分析するための重要な概念です。それぞれの計算方法を以下にまとめます。
パワースペクトル ()
パワースペクトルは、1つの信号が各周波数にどれだけの「パワー」(エネルギー)を持っているかを示すものです。信号の自己相関をフーリエ変換することで得られます。
クロスパワースペクトル ()
クロスパワースペクトルは、2つの異なる信号$x(t)y(t)
クロスパワースペクトルは一般的に複素数となり、その絶対値が両信号の共通の周波数成分の強さを示し、偏角(位相)が両信号間の位相差を示します。
コヒーレンス ()
コヒーレンスは、2つの信号間の線形相関の度合いを周波数ごとに0から1の間の値で示す指標です。 言い換えれば、周波数領域における「相関係数の2乗」のようなものです。信号$x(t)y(t)Cohxy(f)は、パワースペクトルとクロスパワースペクトルを使って以下の式で計算されます。
![]() |
ここで、Pxx(f)Pyy(f)x(t)y(t)のパワースペクトルです。
-
コヒーレンスが1に近い場合: その周波数で2つの信号の関連性が非常に高いことを意味します。
-
コヒーレンスが0に近い場合: その周波数で2つの信号間に線形な関係性がほとんどないことを意味します。
計算手順の例 💻
-
2つの時系列信号$x(t)y(t)$を収集する。
-
各信号を複数のセグメントに分割する。(ウェルチ法など)
-
各セグメントに対して離散フーリエ変換(DFT/FFT)を実行し、周波数スペクトル$X(f)Y(f)$を得る。
-
各セグメントの以下の値を計算し、セグメント間で平均化する。
-
パワースペクトル:
-
パワースペクトル:
-
クロスパワースペクトル:
-
-
平均化されたパワースペクトルとクロスパワースペクトルを用いて、上記のコヒーレンスの式を計算する。
多くのプログラミング言語(Pythonのscipy.signal.coherence
など)には、これらの計算を行うための便利な関数が用意されています。