FFT 周波数解析 体験ツール

FFTを使って、時間波形と周波数スペクトルの対応を確認するWebツールです。 正弦波を合成し、窓関数やゼロ埋めを切り替えながら、ピークの位置や広がりを見比べられます。

測定器の代わりではなく、FFT、周波数bin、スペクトル漏れを学ぶための体験ツールです。

信号と解析条件

Δf 1 Hz
記録長から決まる周波数間隔1 HzFs / N。真の分解能を見る目安です。
表示上のbin間隔1 Hzゼロ埋めを増やすと細かくなります。
ナイキスト周波数512 Hz表示する単側スペクトルの上限です。

時間波形

1024 samples / 1,024 Hz
合成波形

振幅スペクトル

0Hz - 512 Hz
64Hz
bin 6464 Hz振幅 1 / 位相 0°

画面に表示しているスペクトルは、合成した数値配列に窓関数を掛け、自前の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の前に、サンプリングでどの周波数として観測されるかを確認できます。

エイリアシング 体験ツール