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
















