FFT = Fast Fourie Transformだったかな、直訳すると高速フーリエ変換、となる気がするが間違いである。やってるのはDFT = Discrete Fourie Transform高速化である。一般に言うフーリエ変換は連続世界の話なのである。コンピュータでは離散化必須であり連続世界ではない、キリッ)
Pythonで学ぶ実践画像処理・音声処理入門 伊藤他・コロナ社でfftがあったので見た。
Sampling = 8k, 成分は、500, 1000, 1500, 2000Hzである。係数は略
これのfftは、
# fft
cs = sfft.fft(yy[:8000])
plt.plot(np.abs(cs))
plt.show()
500,1000,1500,2000 と係数は換えた。1500の係数は1である。そして、その場合には縦軸がSampling 8k の1/2 の 4000を示している。
なぜ、4000なのか。なぜ、Sampling 8000の半分なのか、なじぜー、どないしてー。
という当たりで実はワタクシはフーリエ級数、フーリエ変換に関する理解が浅いと気づいた次第である。
なんちーーて。
そういうわけなので、どうして4000になるのかはフーリエ級数の原理的な話から始めるといいね。ただ、ここらは定性的な話をしてもダメで、さらに数学を駆使してもダメですね。数式展開だと納得する場合もあるがイメージとしてはグラフが良い。
例えば1kHzの正弦波がある場合に、1kHzのsin()を持ってきて比較して、次に1kHzのcos()を持ってきて比較して・・・とすると、どうなるか。位相が揃っているとすれば三角関数の次の計算がヒントになる。
sin( x)×sin( x) = 正になる 2乗だからな、プラスになる。 sin()×cos() =プラス成分もマイナス成分もある。これはグラフを書くと一目瞭然で周期積分するとゼロになる。
ここらは数学的には関数の直交性というものだが、文章ではわかりにくいし数式でもわかりにくい。グラフが良い。
一を知って十を知るような賢者はともかく、IQ88のようなオレには具体的なイメージというものが大事。一目瞭然・・・・・と言うでしょ。言葉での説明よりも見ればスッキリとわかるの。
というわけで、そのような解説を次回から書く・・・たぶん。いや、なんで4000が出るのかってのは、簡単に言うと規格化してないからだけど(笑) それとは別に4000という数字がどうして出るかという疑問に回答だ。それはフーリエ級数の理解に直結する。
さてと、酒買いに行くか。エネルギーが不足している(笑)