nano_exit

基礎的なことこそ、簡単な例が必要だと思うのです。

高速フーリエ変換(FFT)を使ってフーリエ変換する方法

高速フーリエ変換FFT)は結局は離散フーリエ変換であり、どちらかというとフーリエ級数展開に近い。
高速フーリエ変換 - Wikipedia

FFTは結局は級数展開、つまり「和」なので、フーリエ変換、つまり「積分」にするためには、変換が必要である。
http://hooktail.sub.jp/mathInPhys/riemannIntegra/

多くの場合には、フーリエ変換は信号解析で用いられるため、時間 tと振動数 fを変数に用いることが多い。
ここでは信号データを s( t )、そのフーリエ成分を S( f )として考える。

データ数が Nの時のFFTの式:

\displaystyle
S( f ) = \sum^{ N - 1 }_{ j = 0 } s( t_j ) e^{ - i 2 \pi f \frac{ j }{ N } }
\\
\displaystyle
s( t ) = \frac{ 1 }{ N } \sum^{ N - 1 }_{ j = 0 } S( f_j ) e^{ i 2 \pi t \frac{ j }{ N } }
少なくともpythonのscipy.fftpackではこの定義に従っていると思われるため、横軸は振動数 fで出力される。

これをフーリエ変換を見比べる。以下では \omega = 2 \pi fを使い、 \omegaに変数変換した後のフーリエ成分を \bar{S}(\omega)とすると。

\displaystyle
\bar{S}( \omega ) = \int^{ \infty }_{ -\infty } s( t ) e^{ - i \omega t } \, dt
\\
\displaystyle
s( t ) = \frac{ 1 }{ 2 \pi } \int^{ \infty }_{ -\infty } \bar{S}( \omega ) e^{ i \omega t }

「和」を「積分」に変換するには、積分における「 dt」に対応するものが必要である。それがなければ、いくらデータ間隔を細かくしたところで積分にはならない。
データ間隔 \Delta_t( N )を以下のように定義する。
 
\displaystyle
\Delta_t( N ) = t_{ j + 1 } - t_j = ( t_{ N-1 } - t_0 ) / ( N - 1 ) \equiv T / ( N - 1 )

これを用いて、和を積分に変換する。

\displaystyle
S( f ) = \sum^{ N - 1 }_{ j = 0 } s( t_j ) e^{ - i 2 \pi f \frac{ j }{ N } }
  = \frac{ 1 }{ \Delta_t( N ) } \sum^{ N - 1 }_{ j = 0 } s( t_j ) e^{ - i 2 \pi f \frac{ j }{ N } } \Delta_t( N )
\\
\displaystyle
\qquad \rightarrow \lim_{N \rightarrow \infty} \frac{ 1 }{ \Delta_t( N ) } \sum^{ N - 1 }_{ j = 0 } s( t_j ) e^{ - i 2 \pi f \frac{ j }{ N } } \Delta_t( N )
\\
\displaystyle
\qquad = \lim_{N \rightarrow \infty} \frac{ 1 }{ \Delta_t( N ) } \int^{ \infty }_{ -\infty } s( t ) e^{ - i 2 \pi f t } \, dt
\\
\displaystyle
\qquad = \lim_{N \rightarrow \infty} \frac{ 1 }{ \Delta_t( N ) } \bar{S}( \omega ) =  \lim_{N \rightarrow \infty} \frac{ 1 }{ \Delta_t( N ) } \bar{S}( 2 \pi f )

したがって、十分大きい Nを用いたとき、近似的に以下の関係が成り立つ。

\displaystyle
\bar{S}( \omega ) \sim \Delta_t( N ) S( f ) = \Delta_t( N ) S( \omega / 2 \pi )
数式上では、 \omegaを用いることが(少なくとも自分の分野では)多いため、 f \omegaに揃えておかないと混乱する。

フーリエ変換した \bar{S}(\omega)にフィルターを掛けた後に逆変換をしたい場合には、対応する S(\omega/2\pi)FFTで逆変換すれば良い。