2019年11月09日

FFTというのが・・・・そればっかーーー

  Cによる科学技術計算 小池・CQ出版 1990年頃 にあったFFTの解説記事とC言語によるプログラムを学習した次第である。
  基数2のFFTのアルゴリズムの理屈に関しても数式で説明していてヨロシイ。∑が連なる例の奴ね。
で、FFTのプログラムは写経して動作確認に加えてグラフ化。gnuplot使った。データはファイル化。それでデータ数65536で実行して時間見たり。まー他の本のと似たような結果であった。うむうむ。
N = 1024で次の入力信号をFFT。

x[n] = sin(2.0*M_PI*10*n/N) + cos(2.0*M_PI*20*n/N) ;

image

FFTの結果 sin()の10Hzは奇関数なので中央での折返しは奇関数の特徴。cos()の20Hzは偶関数なので正に出ている。中央での折返しは負の周波数が出ていると解釈できる。うむうむ。
image

逆FFT   IFFTにして戻す
image

  入力信号に関してはn = 0の時は数式では1になるはずである。グラフは1より大きい感じがする。これは気のせいである(笑) この部分を拡大すると次のようになっているので納得するのである。gnuplotにZoom機能があったのである。
image

C言語のソースを写経し、さらにファイル化し、gnuplotで表示し、というとプログラムを少しは書いた気がするのであるが、実はコピペぱかりである。グラフ化するところは一つのファイルに書いたら他のファイルではコピペである。せいぜいテキストファイル名を変えるぐらいである。
VScode使っているので入力補完機能があり、コードを書くという場合もスペルミスは心配しないである。写経も楽であるぞな。やっぱ、写経だわ。出版社からソースコードをダウンロードできる場合が多々あるが、そういうものはVscodeで開いてクリック、クリックで動作するからアタマに染み込むものがないのである。
自分でキーボード叩くのである。写経こそが初学者の原点である。テキトーである。

  えーと、ちなみに上の本だが誤記がありまして、というか、ふざけてんのかって感じの間違いがあってワロタ。初版ではなく第2版になる。30年ぐらい昔の本である。Lattice Cを使っていたのである。パソコンはPC-98かPC-286であろう。たぶん。その頃のパソコンと今のパソコンは・・・・・・いいや、べつに。

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