2019年11月10日

FFTというものがありましてーーー  まだやってんのーー

本のFFTのプログラム(30年ぐらい昔の)をBASICからC言語に、FortranからC言語にと移植してお勉強したのであるが次のような場合にどう考えるのかどんづまったのでメモ。
N = 1024, 信号は2Hz Sinとする。これをFFTして見ると教科書通りの結果になる。

入力信号
image

FFT結果
image

2Hzは左端にあって見づらいので拡大する。gnuplotで with linesを使ったのでつながっているが値は2の点だけにある。
image

次に信号を2.5Hz Sinにしてみる。

image

左端あたりを拡大すると うむむむ。0, 1, 2, 3, 4, 5…と成分が出てきた。ピークは2, 3にある。
image

これはどういうことか。横軸は整数なのであり2.5相当の点はない。信号は2.5Hzである。そりゃ近い方の2,3に成分が出るだろなーと想像。だが、2,3だけでなく他にも出た出た出た。弱いけど。

ここはDFTの基本通りに、sin( 2.5Hz)×W(回転子)の計算をすると値がそう出るのだろな。
うむ、Excelで試してみるか、データ数を16とかにして。

で、実際にFFTを利用する場合、入力信号が整数周波数とは限らないわけだ。だが、横軸は整数だ。データ数だ。周波数に換算しても基底周波数が分解能になる。基底周波数の整数倍についての情報が得られる。そういえばフーリエ級数ってそういうものだった(笑)
そうか、上の例は分解能が1Hzなのに0.5Hz成分を見ようとしてアカンという話だ。うむうむ、そんな気がしてきた。

まあしかし、精密な周波数成分を求める場合ってのは別にして傾向を知るにはいいのではないか。いや、そうではなくてFFTの使い方ってどうすんの、って話か。
データ数をどう設定するか・・・・信号を長く取り込んだほうが精度は上がるだろよさ。だが計算時間は長くなる。ま、今のPCの性能ならば・・・待て待て、そういう話か。
よっしゃ、ここで30-40年前の教科書は離れて10年ぐらい前の教科書探して事例を知ろう。

10年前でなくて今年の教科書でもいいがなや(´・ω・`)


実は勘違いが発覚しましたので、この項は終わりm(_ _)m

posted by toinohni at 07:40| 東京 ☀| Comment(0) | エレクトロニクス雑学 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
コチラをクリックしてください