スキップしてメイン コンテンツに移動

投稿

3月 11, 2018の投稿を表示しています

高速フーリエ変換fftwの係数

フーリエ変換は信号処理に欠かせない。 フリーの高速フーリエ変換として fftw が有名である。しかしその係数についてパッと検索しただけではわからなかったので自分で調べてみた。 Mathematica には係数を明示的に定義できる。 FourierParameters->{a,b}の設定で,Fourierにより計算される離散フーリエ変換は   1/n^((1-a)/2)Underoverscript[\[Sum], r=1, n]Subscript[u, r] e^(2\[Pi] ib(r-1)(s-1)/n) となる. » よく使われる{a,b}の選択として, {0,1} (デフォルト), {-1,1} (データ解析), {1,-1} (信号処理) がある. In[1]:= data = {1, 0, -1, 0, 2, 0, -2} In[2]:= Fourier[data, FourierParameters -> {1,-1} ] //   TableForm Out[2]= 0. +0. I -1.8264+0.279032 I 3.59299 -3.9474 I 1.73341 +0.300257 I 1.73341 -0.300257 I 3.59299 +3.9474 I -1.8264-0.279032 I 他方、Rでは library("fftw", lib.loc="/Library/Frameworks/R.framework/Versions/3.3/Resources/library") data=c(1, 0, -1, 0, 2, 0, -2); fft(data) [1]  0.000000+0.000000i -1.826396+0.279032i  3.592990-3.947403i [4]  1.733406+0.300257i  1.733406-0.300257i  3.592990+3.947403i [7] -1.826396-0.279032i と同じになりました。これはMathematicaの説明ではデータ解析で全体の係数は 1、Expの係数は-2π ですね。ここでもう一つわかるのは、第1項は同じDC成分です