JP / EN
Signal Processing

Fourier Transform

波形を「どの周波数が、どれだけ含まれるか」で読み解く

1. 波を重ねる、波を分ける

音や振動の波形は複雑に見えても、異なる周波数の正弦波・余弦波を重ねたものとして考えられます。波を重ねて作る見方がフーリエ級数の入口であり、元の波にどの周波数が含まれるかを調べるのがフーリエ変換です。

まずは、二つの波だけを重ねた例で、時間方向の波形が周波数方向ではどう見えるかを確かめましょう。

2. 例題:5 Hzと12 Hzの波を重ねる

1秒間の信号を、振幅1の5 Hzの正弦波と振幅0.5の12 Hzの余弦波から作ります。

s(t) = sin(2π · 5t) + 0.5 cos(2π · 12t)

5 Hzは1秒間に5回、12 Hzは12回振動します。たとえば t = 0 では合成波は 0.5、t = 0.25秒 では二つの波がともに正の山に来るので 1.5 になります。図の赤い点がその位置です。

上から5 Hzの正弦波、振幅0.5の12 Hzの余弦波、二つを足した合成波。赤い点は時刻0秒と0.25秒の値。
図1:同じ1秒間における二つの成分と合成波。合成波の形だけを見て、5 Hzと12 Hzを読み取るのは簡単ではありません。

3. 周波数スペクトルで見る

この1秒間を1秒あたり64回の速さで標本化し、64個の値 s[n] を得ます。有限個のデータに使う変換は離散フーリエ変換(DFT)です。

X[k] = ∑n=063 s[n] e−i2πkn/64

観測時間が1秒なので周波数の刻みは 1 Hz です。正の周波数(1 ≤ k ≤ 31)に対する振幅 2|X[k]|/64 を描くと、5 Hzと12 Hzの位置にだけ山が現れます。

離散フーリエ変換の振幅スペクトル。5 Hzに高さ1.0、12 Hzに高さ0.5のピークがあり、他の周波数はほぼゼロ。
図2:64個の標本から計算した片側振幅スペクトル。縦軸は振幅、横軸は周波数です。成分がそれぞれ5 Hz・振幅1.0と12 Hz・振幅0.5として現れます。
成分周波数振幅位相
正弦波5 Hz1.0−90°
余弦波12 Hz0.50°

振幅スペクトルは「何Hzがどれだけ強いか」を示します。ただし、振幅だけでは波の始まる位置は分かりません。元の波形を正しく再構成するには、表の位相も必要です。

4. フーリエ変換・DFT・FFTの関係

連続した信号を扱う考え方がフーリエ変換、有限個の標本に対する計算がDFTです。FFT(高速フーリエ変換)は、DFTと同じ結果を効率よく計算するアルゴリズムです。

この例でピークがきれいに二つだけ現れるのは、1秒間に5回と12回の振動がちょうど収まっているからです。実際の信号では観測時間や切り出す位置によって周囲の周波数にも値が広がることがあり、これをスペクトル漏れと呼びます。

この例の標本化周波数は64 Hzで、最高成分の12 Hzの2倍を超えています。標本化が遅すぎると、高い周波数が別の低い周波数に見える「折り返し(エイリアシング)」が起こります。

波を重ねて時間波形を作り、DFTで周波数成分へ戻す。この往復を押さえると、音・振動・画像の分析にも共通するフーリエ解析の考え方が見えてきます。