GUST NOTCH? DIARY

FFTのおさらい

プチコンFFTを使うときの注意事項と結果についての覚書。

  • プチコンFFTは入出力ともに複素数
  • 入出力の要素数は2のn乗である必要がある
  • 窓関数が使える。矩形窓、ハミング窓、ハニング窓、ブラックマン窓が使える。指定しない場合は矩形窓ということになる


入力波形は Ire に数値を設定する。虚部 Iim は 0で埋める。
ここでは周期 T=64 の矩形波を作成している。サンプル数が512なので、丁度8周期分が含まれることになる。
これをFFTすると、スペクトルが Ore と Oim に返る。簡単に言うと実部は直流成分とcos成分。虚部はsin成分。
この場合の出力は以下のようになる。

この例ではsin成分しかないので、実部の出力は0。
SAMPLES のデータで検出可能な周波数成分は標本化定理により SAMPLES/2 周期まで。つまり512サンプルの場合256サンプル周期の波までが検出できる。
Ore と Oim の 0 から SAMPLES/2-1 までが各周期の成分を示している。8=512/64 なので64サンプル周期の波が -50 の強さで含まれているという意味。ここでのマイナスは位相が現れていることになる。実際は複素平面上の原点からの距離を考える必要があるので、パワースペクトル SQRT(Ore[I]*Ore[I]+Oim[I]*Oim[I]) を求めないといけない。SAMPLES/2からSAMPLES-1 までは周期成分軸上の負の値で、SAMPLES-1 が軸上の-1、SAMPLES/2 が -SAMPLES/2。sin 成分は点対称、cos成分は線対称に現れる。そのため、周波数のパワーのみを考える場合は半分だけ見ればよい。パワースペクトルの総和が元の波形の振幅。
逆変換はスペクトルの数値をそのまま入力にいれてやると、出力は振幅も復元される。