FFT 周波数解析 体験ツール
FFTを使って、時間波形と周波数スペクトルの対応を確認するWebツールです。 正弦波を合成し、窓関数やゼロ埋めを切り替えながら、ピークの位置や広がりを見比べられます。
測定器の代わりではなく、FFT、周波数bin、スペクトル漏れを学ぶための体験ツールです。
信号と解析条件
Δf 1 Hz時間波形
1024 samples / 1,024 Hz振幅スペクトル
0Hz - 512 Hz画面に表示しているスペクトルは、合成した数値配列に窓関数を掛け、自前のFFTで計算しています。
要望やバグ報告はお問い合わせフォームからどうぞ。
使い方
周波数、振幅、位相を設定すると、合成した時間波形とFFTの振幅スペクトルを同時に表示します。 まずは「ビン中心の正弦波」を選び、周波数を少しずつ動かすと、ピークが1本に集まる場合と周囲へ広がる場合を見比べられます。
このページは、FFTを使った周波数解析を学ぶための体験ツールです。 マイク入力や実測用のスペクトラムアナライザではありません。
FFTとは
FFTは高速フーリエ変換(Fast Fourier Transform)の略です。 DFTは離散フーリエ変換(Discrete Fourier Transform)の略で、FFTはDFTを高速に計算するためのアルゴリズムです。 このツールでは、時間波形を周波数ごとの成分に分けて、どの周波数がどれくらい含まれているかを表示します。
ここでは、\(N\) 点の離散時間信号 \(x[n]\) から、周波数成分 \(X[k]\) を次の式で求めます。
\[X[k] = \sum_{n=0}^{N-1} x[n] e^{-j2\pi kn/N}\]
周波数軸の \(k\) 番目のbinは、\(f_k = kF_s/N\) Hzに対応します。\(F_s\) はサンプリング周波数です。
周波数binと分解能
FFTのbin間隔は、サンプリング周波数を記録長で割った値です。 たとえば \(F_s = 1024\,\mathrm{Hz}\)、\(N = 1024\) なら、bin間隔は \(1\,\mathrm{Hz}\) になります。
ゼロ埋めを使うと、表示上の周波数刻みは細かくなります。 ただし、元の観測時間が長くなるわけではないため、ゼロ埋めだけで真の周波数分解能が上がるわけではありません。
スペクトル漏れと窓関数
正弦波の周波数がFFTのbin中心に一致しない場合、エネルギーは1本のbinに集まらず、周囲のbinへ広がって見えます。 これをスペクトル漏れと呼びます。
窓関数は、記録の両端をなめらかにして、遠くのbinへ広がる成分を抑えるために使います。 その代わり、ピークの中心付近の幅は広がります。
位相もスペクトルの一部
複素スペクトル \(X[k]\) は、振幅 \(|X[k]|\) と位相 \(\arg X[k]\) に分けて見られます。 単一の正弦波では、位相を変えると時間波形の位置は変わりますが、振幅スペクトルの大きさは変わりません。
このツールでは、主なピークの位相をスペクトル下の一覧に表示しています。 位相は時間記録の開始点に対する相対量として見てください。
関連ツール
サンプリング周波数とナイキスト周波数、折り返しを確認したい場合は、エイリアシング体験ツールも使えます。 FFTの前に、サンプリングでどの周波数として観測されるかを確認できます。
