FFT 周波数解析 体験ツール

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

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

信号と解析条件

Δf 1 Hz

位相とDC成分は音には反映されません。ヘッドホンの音量にご注意ください。

データ長から決まる周波数間隔1 HzFs / N。真の分解能を見る目安です。
表示上のビン間隔1 Hzゼロ埋めを増やすと細かくなります。
ナイキスト周波数512 Hz表示する周波数範囲(0 Hz〜ナイキスト周波数)の上限です。

時間波形

1024 samples / 1,024 Hz
合成波形

振幅スペクトル

0Hz - 512 Hz
64Hz
ビン 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\) 番目のビンは、\(f_k = k f_s/N\) Hzに対応します。\(f_s\) はサンプリング周波数です。

周波数ビンと分解能

FFTのビン間隔は、サンプリング周波数をデータ長で割った値です。 たとえば \(f_s = 1024\,\mathrm{Hz}\)\(N = 1024\) なら、ビン間隔は \(1\,\mathrm{Hz}\) になります。

ゼロ埋め(ゼロパディング)を使うと、表示上の周波数刻みは細かくなります。 ただし、元の観測時間が長くなるわけではないため、ゼロ埋めだけで真の周波数分解能が上がるわけではありません。

スペクトル漏れと窓関数

正弦波の周波数がFFTのビン中心に一致しない場合、エネルギーは1本のビンに集まらず、周囲のビンへ広がって見えます。 これをスペクトル漏れと呼びます。

窓関数は、記録の両端をなめらかにして、遠くのビンへ広がる成分を抑えるために使います。 その代わり、ピークの中心付近の幅は広がります。

位相もスペクトルの一部

複素スペクトル \(X[k]\) は、振幅 \(|X[k]|\) と位相 \(\arg X[k]\) に分けて見られます。 ビン中心に一致する単一の正弦波では、位相を変えると時間波形の位置は変わりますが、振幅スペクトルの大きさは変わりません。ビン中心から外れた場合は、漏れ成分どうしの干渉でわずかに変わることがあります。

このツールでは、主なピークの位相をスペクトル下の一覧に表示しています。 位相は時間記録の開始点に対する相対量として見てください。

関連ツール

サンプリング周波数とナイキスト周波数、折り返しを確認したい場合は、エイリアシング体験ツールも使えます。 FFTの前に、サンプリングでどの周波数として観測されるかを確認できます。

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