まるもの雑記

なにか作ったりとかゲームとか。

FFTとフィルタリング

FFTが時間軸の信号を周波数軸に変換するのであれば

FFTしたあとの信号から特定の周波数を取り除くと

フィルターとして動作するんじゃないだろうか??

たしか教科書とか読むとするって書いてあるんだけど

読んでも理解できないのでやってみることにします。

 

FFTのことを調べると必ずGoogle先生

ファイナルファンタジータクティクスのことでしょ?

って言いますがここでは

Fast Fourier Transform です。

スペルはもちろん調べましたとも。

 

まずは逆変換の確認

今回はたくさんの周波数を含んでた方がやりやすいので

入力を方形波にします。

こっちが入力とFFT逆変換の波形。

いい感じで重なってます。

全周波数帯でFFTは逆変換でもとにもどるようです。

FFT結果は

高調波をたくさん含んでることがわかります。

美しい。

よく見る感じで横軸をlogにしてみると

今回は波形が見やすいように4096サンプルでやってるので

ちょうど1kHzのところが見えませんが入力は1kHzとしています。

 

高域をカット

サンプリング周波数48kHzなのでとりあえず12kHz以上を切ってみます。

FFT結果を半分で折り返して右半分の値を0にするイメージ。

言葉より絵ということでこんな感じ。

横軸ログにしない方が見やすいので今回は横軸リニアで行きます。

これを逆変換してあげると

なんか教科書で見た波形が出てきたけどどうもこれが低域通過フィルタになってるかどうか微妙な感じ。

さらにf0を半分にして6kHzにしてみましょう。

周波数が低くなった気がするけどあんまり変化ない感じ。

左右対称になるんですね。

私も実験しながらやってるのでどうなるのか知りません。

とりあえずf0を1500Hzくらいにしてみましょう。

左右対称にするために32で割っただけです。

見えなくなったのでやっぱりログにしました。

ローパスっぽく動いてますね。

あとで画像にかけてみようと思ってるので

オーバーシュートを気にした方がよさそうです。

 

ちなみにその半分の750Hzまで落とすと

もはやわからない感じ。

そもそも入力の1kHzを切ってるのでそりゃ変になりますよね。

画像が多いので今日はこの辺にしておきます。