時系列を周波数で見直し、フーリエ変換とパワースペクトルの意味を図と数式で理解する。
時系列データは通常、時間に対して値をプロットする。この見方を時間領域という。しかし、時間領域だけでは「どの周期が強いか」は分かりにくい。
そこで、横軸を時間ではなく周波数や周期にして、どの時間スケールの変動が強いかを見る。この見方を周波数領域という。
単純な1つの波だけでできている信号なら、スペクトルでは対応する周波数に1本のピークが出る。
時系列 x(t) の中に、ある周期の波が含まれているかを調べたい。
例えば、周波数 f の波を調べたいなら、次のような波を用意する。
ここで f = 1 / 周期 である。つまり、周期20なら f = 1/20 = 0.05 になる。
2つの関数が似ているかどうかは、「掛けて、全体で足し合わせる」と判断できる。
この値が大きければ、x(t) は cos(2πft) によく似ている。逆に小さければ、あまり似ていない。
つまりこれは、元のデータと、その周波数の波との一致度を測っている。
同じ周期でも、波には位相のずれがある。例えば次の波は、cos と同じ周期だが 90 度ずれている。
もし元のデータが sin 型の波だったら、cos との一致度だけでは十分に検出できない。そこで、sin との一致度も調べる必要がある。
つまり、1つの周波数について調べるには、
の両方が必要になる。
cos と sin を毎回別々に書くのは面倒なので、複素指数関数で1つにまとめる。
ここでオイラーの公式を使う。
この式で θ を −2πft と置くと、
となる。
上の式でマイナスがつくのは、オイラーの公式に θ = -2πft を代入しているからである。
つまり、
であり、cos は偶関数、sin は奇関数なので、
したがって、
となる。
これまでに見たように、ある周波数 f に対して
を計算すると、その周波数の波がどれだけ含まれているかが分かる。
これを、すべての周波数 f について計算したものを X(f) と定義する。
この式に、さきほどの
を代入すると、
積分の線形性により、
と書ける。つまり、
を表している。
関数の内積は、次のように定義される。
したがって、フーリエ変換は
と見なせる。つまり、x(t) を「周波数 f の波」に投影しているのである。
ここまでは連続的な時間 t を使っていた。しかし、実際のコンピュータで扱うデータは離散である。そこで時間を一定間隔 Δt ごとに区切る。
ここで、
である。
積分は「細かく分けて足し合わせる」ことで近似できる。したがって、
は、
と書ける。
ここで注意が必要なのは、最後に付いている Δt である。 これは「時間の刻み幅」であり、周波数 f には依存しない定数である。
つまり、厳密にはフーリエ変換は次のように書かれる:
ここでは、連続時間の式から離散化した形を区別するために、 連続版を Xcont(f) と書いている。
しかし、ここで私たちが知りたいのは 「どの周波数が強いか(ピークの位置)」であり、 全体に一定の倍率がかかるかどうかは本質ではない。
そのため授業では、この定数 Δt を フーリエ変換の定義の中にまとめて吸収してしまい、
という形で扱う。
以後、離散化された時系列データを簡単に表すために、 x(nΔt) を x(n) と書く。
データ数が有限なら、区別できる周波数も有限個になる。データ数を N とすると、周波数は次のように離散化できる。
ここで、
である。
この式を
に代入すると、指数の中は
となり、Δt が消える。
したがって、
となる。これが離散フーリエ変換である。
この1行が、上の総和をすべての周波数について計算している。
X(f) は「周波数 f の波がどれだけ含まれているか」を表す量である。
ただし X(f) は複素数なので、そのままでは見にくい。そこには
の情報が入っている。
まず、複素数 X(f) の大きさをとる。
さらに、その2乗をとる。
これがパワースペクトルである。
物理では、エネルギーは振幅の2乗に比例することが多い。たとえば波の強さも、単純には振幅の2乗に比例すると考えられる。
したがって、振幅そのものではなく、その2乗をとると「どの周波数がどれだけエネルギーを持つか」が見やすくなる。
グラフのピークは、「その周波数の成分が強い」ことを意味する。
したがって、
である。
例えば、
すべての周波数について「その周波数の波とどれだけ似ているか」を計算しているので、元のデータに本当に含まれている周期では一致度が大きくなる。
その結果、スペクトルにピークが現れる。
パワースペクトルは、各周波数の強さを表す。