前回の続きです。
とりあえずPythonを使ってフーリエ変換はできたわけですが、"fftfreq(N, dt)"がどういう計算をしているのかよくわからん、ということでした。
ちなみにNはデータ数、dtはサンプリングの時間間隔です。
で値を色々見ていった結果、どうやら
0から( N/2 - 1 ) / ( N*dt )までの範囲で1/(N*dt)刻みの値を持つ配列
を生成しているようです。(前回の最初の結論のところで述べたことに対応しています。)
もう少し詳しく言うと、N/2番目のところのナイキスト周波数までで一旦打ち切り、残りの配列を負の配列で作っているのですが、まあ重要じゃないので無視してください。
そんなわけで、上記の配列要素番号から周波数への変換公式(?)を使えば、Python以外の言語で"fftfreq(N, dt)"に対応する関数を知らなくても、自分で周波数スケールを作ってフーリエ変換結果の配列を正しく見るこことができます。
もっかいまとめとくと、
配列番号: 1 → N
は
周波数: 0 → ( N - 1 ) / ( N*dt )
と対応させて周波数のスケールを作ればオケオケオッケー!!!