半分のサイズのFFTに分解するFFTアルゴリズム構造の例 10、20、30、40、50 Hzのコサイン波の和に対する離散フーリエ解析 同一信号の時間ベース表現(上)と周波数ベース表現(下)。下側の表現は、上側の表現からフーリエ変換によって得られる。 高速フーリエ変換 (FFT )は、シーケンスの 離散フーリエ変換 (DFT)またはその逆変換(IDFT)を計算するアルゴリズム です。フーリエ変換は 、信号を元の領域(多くの場合、時間または空間)から 周波数領域 の表現に変換し、またその逆も行います。
DFTは、一連の値を異なる周波数の成分に分解することによって得られます。[ 1 ] この操作は多くの分野で有用ですが、定義から直接計算すると、実用的ではないほど遅くなることがよくあります。FFTは、DFT行列を疎な(ほとんどがゼロの)因子の積に因数分解することによって、このような変換を高速に計算します。[ 2 ]その 結果、 DFT の 計算の複雑さを軽減することができます。 O ( n 2 ) {\textstyle O(n^{2})} これは、DFTの定義を単純に適用した場合に生じるものです。O ( n ログ n ) {\textstyle O(n\log n)} ここで、n はシーケンスの長さです。速度の差は非常に大きくなる可能性があり、特にnが 数千または数百万になるような長いシーケンスでは顕著です。
FFTはDFT内の項の単なる代数的リファクタリングであるため、すべての項が無限精度で計算されると仮定すれば、DFTとFFTはどちらも数学的に等価で互換性のある演算を実行します。しかし、丸め誤差が存在する場合、多くのFFTアルゴリズムは、DFTの定義を直接的または間接的に評価するよりもはるかに正確です。単純な 複素数演算から 群論 や数論 まで、幅広い公開理論に基づいたさまざまなFFTアルゴリズムがあります。最もよく知られているFFTアルゴリズムはn の因数分解 に依存しますが、O ( n ログ n ) {\displaystyle O(n\log n)} 素数 を含むすべてのn の複雑さ。多くの FFT アルゴリズムは、e − 2 π 私 / n {\textstyle e^{-2\pi i/n}} はn 乗の原始根 であり、したがって、数論的変換 など、任意の有限体上の類似の変換に適用できます。逆 DFT は、指数の符号が逆で 1/ n の係数を持つ点を除いて DFT と同じであるため、任意の FFT アルゴリズムを容易に適用できます。
高速フーリエ変換は、工学、音楽、科学、数学の分野 で広く利用されています。基本的な考え方は 1965 年に普及しましたが、一部のアルゴリズムは 1805 年という早い時期に考案されていました。 [ 1 ] 1994 年に、ギルバート・ストラングは FFT を「私たちの生涯で最も重要な数値アルゴリズム 」と評し、[ 3 ] [ 4 ] IEEE の 雑誌Computing in Science & Engineering では 20 世紀のトップ 10 アルゴリズムに選ばれました。[ 5 ]
アルゴリズム
クーリー・テューキーアルゴリズム最も一般的に使用されているFFTは、クーリー・テューキーアルゴリズムです。これは分割統治アルゴリズム であり、任意の合成 サイズのDFTを再帰的に分割します。 n = n 1 n 2 {\textstyle n=n_{1}n_{2}} の中へn 1 {\textstyle n_{1}} サイズが小さいDFTn 2 {\textstyle n_{2}} 、 とともにO ( n ) {\displaystyle O(n)} 複素数の根 による乗算は、伝統的にツイドル因子 と呼ばれている(ジェントルマンとサンデ、1966年による)。[ 19 ]
この方法(およびFFTの一般的な考え方)は、1965年のクーリーとテューキーの論文[ 13 ] によって普及しましたが、後に[ 1 ] 、この2人の著者が1805年頃にカール・フリードリヒ・ガウス が知っていたアルゴリズムを共同で独自に再発明していたことが判明しました[ 20 ] (そしてその後、限定的な形で何度か再発見されました)。
Cooley–Tukey アルゴリズムの最もよく知られた使用法は、各ステップで変換をn /2 サイズの 2 つの部分に分割することであり、そのためサイズは 2 のべき乗に制限されますが、一般的には任意の因数分解を使用できます (Gauss と Cooley/Tukey [ 1 ] の両方が知っていました)。これらはそれぞれ基数 2 および混合基数 の場合と呼ばれます(分割基数 FFT などの他のバリアントにも独自の名前があります)。基本的なアイデアは再帰的ですが、ほとんどの従来の実装では、明示的な再帰を避けるためにアルゴリズムを再構成します。また、Cooley–Tukey アルゴリズムは DFT をより小さな DFT に分割するため、以下で説明するような他の DFT アルゴリズムと任意に組み合わせることができます。
実数データまたは対称データに特化したFFTアルゴリズム 多くのアプリケーションでは、DFTへの入力データは純粋に実数であり、その場合、出力は対称性を満たす。
X n − k = X k * {\displaystyle X_{nk}=X_{k}^{*}} そして、この状況のために効率的なFFTアルゴリズムが設計されている(例えば、Sorensen、1987を参照)。[ 27 ] [ 28 ] 1つのアプローチは、通常のアルゴリズム(例えば、Cooley–Tukey)を取り、計算の冗長な部分を削除することで、時間とメモリを約2倍節約することである。あるいは、偶数 長の実数入力DFTを、半分の長さの複素DFT(実部と虚部は元の実数データの偶数/奇数要素)として表現し、その後、O ( n ) {\displaystyle O(n)} 後処理操作。
かつては、実数入力のDFTは離散ハートレー変換 (DHT)によってより効率的に計算できると考えられていましたが、その後、同じ入力数に対して対応するDHTアルゴリズム(FHT)よりも少ない演算で済む特殊な実数入力DFTアルゴリズム(FFT)が一般的に見つかることが主張されました。[ 27 ] ブルーンのアルゴリズム(上記)は、実数入力を活用するために最初に提案された別の方法ですが、普及しませんでした。
偶数/奇数 対称性を持つ実データの場合、FFT にはさらに特殊化があり、その場合、時間とメモリを約 2 倍に短縮でき、DFT は離散コサイン /サイン変換 ( DCT / DST ) になります。これらのケースでは、FFT アルゴリズムを直接変更する代わりに、実データの FFT と組み合わせることで DCT/DST を計算することもできます。O ( n ) {\displaystyle O(n)} 前処理と後処理。
計算上の問題
近似値 上記で説明したすべての FFT アルゴリズムは、DFT を正確に計算します (つまり、浮動小数点 誤差を無視します)。ただし、計算量の増加を犠牲にして誤差を任意に小さくできる、DFT を近似的に計算する FFT アルゴリズムもいくつか提案されています。このようなアルゴリズムは、近似誤差を速度の向上やその他の特性と交換します。たとえば、Edelman ら (1999) [ 37 ] による近似 FFT アルゴリズムは、高速多重極法 の助けを借りて並列計算 の通信要件を低くします。Guoと Burrus (1996) [ 38 ] によるウェーブレットベースの近似 FFTは 、正確な FFT で可能なよりも効率的に疎な入力/出力 (時間/周波数局所化) を考慮します。DFT 出力のサブセットを近似的に計算する別のアルゴリズムは、Shentov ら (1995) によるものです。[ 39 ] エデルマンアルゴリズムは、データの圧縮性(疎性)ではなく、フーリエ行列自体の圧縮性(ランク不足)に基づいているため、疎データと非疎データの両方で同様に機能します。逆に、データが疎である場合、つまり、n 個の フーリエ係数のうちk 個 だけが非ゼロである場合、複雑さは次のように削減できます。O ( k ログ n ログ n / k ) {\displaystyle O(k\log n\log n/k)} 、これは確率的近似アルゴリズム(最大のk 係数を数桁の小数点以下まで推定する)を使用した大規模なn の例(n = 2 22 )において、n / k > 32 の場合の通常のFFTと比較して実用的な高速化につながることが実証されている。 [ 40 ]
正確さ FFTアルゴリズムは有限精度浮動小数点演算を使用すると誤差が生じますが、これらの誤差は通常非常に小さいです。クーリー・テューキーなどのほとんどのFFTアルゴリズムは、アルゴリズムのペアワイズ加算 構造の結果として優れた数値特性を持っています。クーリー・テューキーアルゴリズムの相対誤差 の上限はO ( ε ログ n ) {\textstyle O(\varepsilon \log n)} 、 に比べO ( ε n 3 / 2 ) {\textstyle O(\varepsilon n^{3/2})} 単純な DFT 式の場合、[ 19 ] 𝜀 はマシンの浮動小数点相対精度です。実際には、二乗平均平方根 (rms) 誤差はこれらの上限よりもはるかに優れており、わずかです。O ( ε ログ n ) {\textstyle O(\varepsilon {\sqrt {\log n}})} クーリー・テューキー法とO ( ε n ) {\textstyle O(\varepsilon {\sqrt {n}})} ナイーブ DFT の場合 (Schatzman、1996)。[ 41 ] ただし、これらの結果は FFT で使用される回転係数 (つまり三角関数の 値) の精度に非常に敏感であり、不正確な三角関数の漸化 式を使用する場合など、不注意な FFT 実装では精度がはるかに悪くなることは珍しくありません。Cooley–Tukey 以外の FFT の中には、Rader–Brenner アルゴリズムのように、本質的に安定性が低いものもあります。
固定小数点演算 では、FFTアルゴリズムによって蓄積される有限精度誤差はさらに悪化し、rms誤差は次のように増加します。O ( n ) {\textstyle O({\sqrt {n}})} クーリー・テューキーアルゴリズム(ウェルチ、1969年)の場合。[ 42 ] この精度を達成するには、精度損失を最小限に抑えるためにスケーリングに細心の注意を払う必要があり、固定小数点FFTアルゴリズムでは、クーリー・テューキーのような分解の各中間段階で再スケーリングが行われます。
FFT実装の正しさを検証するために、厳密な保証を得ることができます。O ( n ログ n ) {\textstyle O(n\log n)} ランダム入力に対する変換の線形性、インパルス応答、および時間シフト特性をチェックする簡単な手順によって時間を測定する(Ergün、1995)。[ 43 ]
中間周波数の値は、様々な平均化方法によって得ることができる。
多次元FFT 多次元DFTの 記事で定義されているように、多次元DFT
X k = ∑ n = 0 N − 1 e − 2 π 私 k ⋅ ( n / N ) x n {\displaystyle X_{\mathbf {k} }=\sum _{\mathbf {n} =0}^{\mathbf {N} -1}e^{-2\pi i\mathbf {k} \cdot (\mathbf {n} /\mathbf {N} )}x_{\mathbf {n} }} 配列x n を d 次元のインデックスベクトル に変換しますn = ( n 1 、 … 、 n d ) {\textstyle \mathbf {n} =\left(n_{1},\ldots ,n_{d}\right)} d 個の入れ子になった合計によって(n j = 0 … N j − 1 {\textstyle n_{j}=0\ldots N_{j}-1} 各j について、除算はn / N = ( n 1 / N 1 、 … 、 n d / N d ) {\textstyle \mathbf {n} /\mathbf {N} =\left(n_{1}/N_{1},\ldots ,n_{d}/N_{d}\right)} は要素ごとに実行されます。言い換えれば、これは、1次元DFTのd セットのシーケンスを、1次元ずつ(任意の順序で)実行することによって構成されます。
この構成的観点により、最も単純で一般的な多次元DFTアルゴリズム、すなわち行列 アルゴリズム(後述の2次元の場合に続く)がすぐに得られます。つまり、d 個の1次元FFTを(上記のいずれかのアルゴリズムで)連続して実行するだけです。まずn1次元に沿って変換し、次に n2 次元に沿って変換し、 以下 同様に行います(実際には、どのような順序でも構いません)。この方法は、通常のO ( n ログ n ) {\textstyle O(n\log n)} 複雑さ、n = n 1 ⋅ n 2 ⋯ n d {\textstyle n=n_{1}\cdot n_{2}\cdots n_{d}} は変換されたデータ点の総数です。具体的には、サイズn 1の変換が n / n 1 回など行われるため、FFT シーケンスの複雑さは次のようになります。
n n 1 O ( n 1 ログ n 1 ) + ⋯ + n n d O ( n d ログ n d ) = O ( n [ ログ n 1 + ⋯ + ログ n d ] ) = O ( n ログ n ) 。 {\displaystyle {\begin{aligned}&{\frac {n}{n_{1}}}O(n_{1}\log n_{1})+\cdots +{\frac {n}{n_{d}}}O(n_{d}\log n_{d})\\[6pt]={}&O\left(n\left[\log n_{1}+\cdots +\log n_{d}\right]\right)=O(n\log n).\end{aligned}}} 2次元では、x k は 次のように見なすことができます。n 1 × n 2 {\displaystyle n_{1}\times n_{2}} このアルゴリズム は、まずすべての行(または列)のFFTを実行し、結果として得られた変換された行(または列)を別の行列としてグループ化することに対応します。n 1 × n 2 {\displaystyle n_{1}\times n_{2}} まず、2番目の行列を作成し、次にこの2番目の行列の各列(または各行)に対してFFTを実行し、同様に結果を最終結果行列にまとめます。
2次元を超える場合、キャッシュの 局所性を高めるために次元を再帰的にグループ化することが有利になることが多い。例えば、3次元FFTでは、まず固定されたn1ごとに各平面スライスの2次元FFTを実行し、次に n1 方向に沿って1次元FFTを実行する。より一般的には、漸近的に最適な キャッシュ非依存アルゴリズムは、 次元を再帰的に 2 つのグループに分割することから構成される。( n 1 、 … 、 n d / 2 ) {\textstyle (n_{1},\ldots ,n_{d/2})} そして( n d / 2 + 1 、 … 、 n d ) {\textstyle (n_{d/2+1},\ldots ,n_{d})} 再帰的に変換される(dが 偶数でない場合は丸め)(FrigoとJohnson、2005を参照)。[ 18 ] それでも、これは行列アルゴリズムの単純な変形であり、最終的には基本ケースとして1次元FFTアルゴリズムのみを必要とし、依然としてO ( n ログ n ) {\displaystyle O(n\log n)} 複雑さ。もう一つのバリエーションは、連続する次元の変換の間に行列転置を 実行することで、変換が連続したデータに対して行われるようにすることです。これは、非連続データへのアクセスに非常に時間がかかるアウトオブコア および分散メモリの状況で特に重要です。
行列アルゴリズムとは異なる多次元FFTアルゴリズムも存在するが、それらはすべてO ( n ログ n ) {\textstyle O(n\log n)} 複雑さ。おそらく最も単純な行列非FFTはベクトル基数FFTアルゴリズム であり、これは変換次元をベクトルで割る通常のCooley–Tukeyアルゴリズムの一般化である。r = ( r 1 、 r 2 、 … 、 r d ) {\textstyle \mathbf {r} =\left(r_{1},r_{2},\ldots ,r_{d}\right)} 各ステップで基数の数。(これはキャッシュの利点にもなり得る。)ベクトル基数の最も単純なケースは、すべての基数が等しい場合(例えば、ベクトル基数2はすべて の次元を2で割り切る)だが、これは必須ではない。一度に1つの非単位基数のみを持つベクトル基数、つまりr = ( 1 、 … 、 1 、 r 、 1 、 … 、 1 ) {\textstyle \mathbf {r} =\left(1,\ldots ,1,r,1,\ldots ,1\right)} は、本質的には行列アルゴリズムです。その他のより複雑な方法としては、Nussbaumer (1977) [ 44 ] による多項式変換アルゴリズムがあり、これは変換を畳み込みと多項式の積の観点から捉えます。詳細と参考文献については、Duhamel と Vetterli (1990) [ 36 ]を参照してください。
その他の一般化 1O ( n 5 / 2 ログ n ) {\textstyle O(n^{5/2}\log n)} n 2 ノードを持つ球面S 2 上の球面調和関数 への一般化はMohlenkamp [ 45 ] によって記述され、アルゴリズムは推測されているが証明されていない。O ( n 2 ログ 2 ( n ) ) {\textstyle O(n^{2}\log ^{2}(n))} 複雑さ。Mohlenkamp は libftsh ライブラリにも実装を提供している。[ 46 ] 球面調和アルゴリズムO ( n 2 ログ n ) {\textstyle O(n^{2}\log n)} 複雑性はロクリンとタイガートによって説明されている。[ 47 ]
高速折り畳みアルゴリズムは FFTに類似していますが、実数または複素数のスカラー値の系列ではなく、ビン化された波形の系列に対して動作する点が異なります。回転(FFTでは複素フェーザによる乗算)は、成分波形の円形シフトです[ 48 ] 。
さまざまなグループが、等間隔でないデータ用の FFT アルゴリズムも発表しており、Pottsら (2001) でレビューされている。[ 49 ] このようなアルゴリズムは、厳密には DFT (等間隔データに対してのみ定義されている) を計算するのではなく、その近似値 (非一様離散フーリエ変換、NDFT であり、それ自体も多くの場合近似的に計算される) を計算する。より一般的には、 スペクトル推定 にはさまざまな他の方法がある。
アプリケーション FFTは、デジタル録音、サンプリング、加算合成 、ピッチ補正 ソフトウェアで使用されています。[ 50 ]
FFTの重要性は、周波数領域での作業を時間領域や空間領域での作業と同等に計算可能にしたという事実から生じます。FFTの重要な応用例には、次のものがあります。[ 16 ] [ 51 ]
電気通信 現代の無線通信規格では、FFTは信号処理の重要な構成要素です。具体的には、4G LTE や5G NR などの直交周波数分割多重 (OFDM)システムで利用されています。[ 53 ] FFTの効率性により、広帯域信号を複数の近接した直交サブキャリアに分割することで高速データ伝送が可能になります。[ 54 ] この技術は、モバイルデバイスにおける干渉を低減し、消費電力を最適化するために不可欠です。[ 54 ]
代替案 FFTは、周波数特性が時間とともに変化する非定常 周波数成分を持つ信号の解析には適さない場合があります。DFTは、信号全体にすべての周波数成分が存在することを前提として、全体的な周波数推定値を提供するため、信号内の短命な特徴や過渡的な特徴を検出することが困難になります。
信号に周波数情報が短時間現れる場合や、一般的に時間とともに変化する場合には、短時間フーリエ変換 、離散ウェーブレット変換 、離散ヒルベルト変換 などの代替手段の方が適している場合があります。[ 55 ] [ 56 ] これらの変換は、周波数と時間ベースの情報の両方を捉えることで、局所的な周波数分析を可能にします。
研究分野 ビッグFFT 天文学などの分野でビッグデータが爆発的に増加したことで、特定の干渉計算のために512K FFTが必要になった。WMAPやLIGOなどのプロジェクトで収集されたデータには、数百億ポイントのFFTが必要である。このサイズ は メインメモリに収まらないため、いわゆるアウトオブコアFFTが活発な研究分野となっている。[ 57 ] 近似FFT MRIなどのアプリケーションでは、不均一な間隔のグリッド点や周波数に対してDFTを計算する必要があります。多重極ベースのアプローチでは、実行時間が増加する係数で近似値を計算できます。[ 58 ] グループFFT FFT は、群表現理論 を使用して説明および解釈することもでき、さらなる一般化が可能になります。非巡回群を含む任意のコンパクト群上の関数は、既約行列要素の基底に関して展開されます。この基底変換を実行するための効率的なアルゴリズムを見つけることは、依然として活発な研究分野です。効率的な球面調和展開、特定の マルコフ過程の 分析、ロボット工学などの応用があります。 [ 59 ] 量子FFT 量子コンピュータ上でのショアの高速整数因数分解 アルゴリズムには、バイナリベクトルのDFTを計算するサブルーチンがあります。これは、現在量子FFTとして知られる1ビットまたは2ビットの量子ゲートのシーケンスとして実装されており、実質的にはフーリエ行列の特定の因数分解として実現されたクーリー・テューキーFFTです。これらのアイデアの拡張は現在研究されています。[ 60 ]
関連項目 FFT関連アルゴリズム:
FFTの実装例:
FFTW – マッテオ・フリゴとスティーブン・G・ジョンソンがMITで開発したフリーソフトウェアライブラリFFTReal – Dmitry Boldyrev による、スカラーまたは SIMD ベクトルをサポートする、高度に最適化されたクリーンで簡潔な C++ クラス実装。GITHUB でホストされています。https ://github.com/mewza/realfft/ALGLIB – デュアル/GPLライセンスのC++およびC#ライブラリ(他の言語もサポート)、実数/複素数FFT実装FFTPACK – もう一つのFortran FFTライブラリ(パブリックドメイン)アーキテクチャ固有の情報: CPUやGPU向けの実装は他にも多数存在し、[ 62 ] 例えばC++用のPocketFFTなどが挙げられる。 その他のリンク:
参考文献 1 2 3 4 Heideman, Michael T.; Johnson, Don H.; Burrus, Charles Sidney (1984). "ガウスと高速フーリエ変換の歴史" (PDF) . IEEE ASSP Magazine . 1 (4): 14– 21. Bibcode : 1984IASSP...1...14H . CiteSeerX 10.1.1.309.181 . doi : 10.1109/MASSP.1984.1162257 . S2CID 10032502 . 2013年3月19日にオリジナルからアーカイブ(PDF) 。 ↑ Van Loan, Charles (1992). 高速フーリエ変換のための計算フレーム ワーク 。SIAM 。 ↑ ストラング、ギルバート (1994年5 月 ~6月 ) 。「ウェーブレット」。 アメリカン・サイエンティスト 。82 ( 3): 250–255。Bibcode : 1994AmSci..82..250S。JSTOR 29775194 。 ↑ ケント、レイモンド D.、リード、チャールズ (2002)。 音声 の音響分析 (第 2 版)。Singular/Thomson Learning。p. 61。ISBN 978-0-7693-0112-9 。↑ Dongarra, Jack; Sullivan, Francis (2000年1月)「トップ10アルゴリズムに関するゲスト編集者による紹介」 Computing in Science & Engineering . 2 (1): 22– 23. Bibcode : 2000CSE.....2a..22D . doi : 10.1109/MCISE.2000.814652 . ISSN 1521-9615 . ↑ ガウス、カール・フリードリヒ (1866)。 「Theoria interpolationis methodo nova tractata」 [ 新しい補間方法に関する理論 ] 。 ナクラス (未発表原稿)。 Werke (ラテン語とドイツ語)。 Vol. 3. ゲッティンゲン、ドイツ: Königlichen Gesellschaft der Wissenschaften zu Göttingen。 265–303 ページ 。 1 2 Heideman, Michael T.; Johnson, Don H.; Burrus, Charles Sidney (1985-09-01). "ガウスと高速フーリエ変換の歴史". Archive for History of Exact Sciences . 34 (3): 265–277 . CiteSeerX 10.1.1.309.181 . doi : 10.1007/BF00348431 . ISSN 0003-9519 . S2CID 122847826 . ↑ Yates, Frank (1937). "要因実験の設計と分析". 連邦土壌局技術報告第35号 . 142 (3585): 90–92 . Bibcode : 1938Natur.142...90F . doi : 10.1038/142090a0 . S2CID 23501205 . ↑ Danielson, Gordon C. ; Lanczos, Cornelius (1942). "Some improvements in practical Fourier analysis and their application to x-ray scattering from liquids". Journal of the Franklin Institute . 233 (4): 365– 380. doi : 10.1016/S0016-0032(42)90767-1 . ↑ ランチョス、コーネリアス (1956)。 応用解析 。 プレンティス・ホール 。 ↑ Cooley, James W. ; Lewis, Peter AW; Welch, Peter D. (1967 年 6 月). "高速フーリエ変換に関する歴史的注釈". IEEE Transactions on Audio and Electroacoustics . 15 (2): 76– 79. Bibcode : 1967ITAuE..15...76C . CiteSeerX 10.1.1.467.7209 . doi : 10.1109/TAU.1967.1161903 . ISSN 0018-9278 . ↑ Good, IJ (1958年7月) 「相互作用アルゴリズムと実用的フーリエ解析」 . Journal of the Royal Statistical Society, Series B (Methodological) . 20 (2): 361– 372. doi : 10.1111/j.2517-6161.1958.tb00300.x . 1 2 Cooley, James W. ; Tukey, John W. (1965). "複素フーリエ級数の機械計算のためのアルゴリズム" . Mathematics of Computation . 19 (90): 297– 301. doi : 10.1090/S0025-5718-1965-0178586-1 . ISSN 0025-5718 . ↑ Cooley, James W. (1987). "高速フーリエ変換アルゴリズムの再発見" (PDF) . Microchimica Acta . Vol. III. ウィーン、オーストリア。pp. 33–45 . 2016年8月20日にオリジナルから アーカイブ (PDF) 。 {{cite book}}: CS1メンテナンス: 場所の発行元が見つかりません (リンク)↑ ガーウィン、リチャード(1969年6月)。 「新しい技術の普及の難しさの一例としての高速フーリエ変換」 (PDF) 。IEEE Transactions on Audio and Electroacoustics。AU -17(2): 68–72 。 2006年5月17日のオリジナルから アーカイブ (PDF) 。 1 2 Rockmore, Daniel N. (2000 年 1 月). "FFT: 家族全員が使えるアルゴリズム". Computing in Science & Engineering . 2 (1): 60–64 . Bibcode : 2000CSE.....2a..60R . CiteSeerX 10.1.1.17.228 . doi : 10.1109/5992.814659 . ISSN 1521-9615 . S2CID 14978667 . 1 2 Frigo, Matteo; Johnson, Steven G. (2007 年 1 月) [2006-12-19]. "算術演算が少ない修正スプリット基数 FFT". IEEE Transactions on Signal Processing . 55 (1): 111– 119. Bibcode : 2007ITSP...55..111J . CiteSeerX 10.1.1.582.5497 . doi : 10.1109/tsp.2006.882087 . S2CID 14772428 . 1 2 3 Frigo, Matteo; Johnson, Steven G. (2005). "FFTW3 の設計と実装" (PDF) . Proceedings of the IEEE . 93 (2): 216– 231. Bibcode : 2005IEEEP..93..216F . CiteSeerX 10.1.1.66.3097 . doi : 10.1109/jproc.2004.840301 . S2CID 6644892 . 2005-02-07 のオリジナルから アーカイブ (PDF) 。 1 2 Gentleman, W. Morven; Sande, G. (1966). "高速フーリエ変換 ― 楽しみと利益のために" . Proceedings of the AFIPS . 29 : 563– 578. doi : 10.1145/1464291.1464352 . S2CID 207170956 . ↑ ガウス、カール・フリードリヒ (1866) [1805]。 理論補間は新しい手法です 。 Werke (ラテン語とドイツ語)。 Vol. 3. ゲッティンゲン、ドイツ: Königliche Gesellschaft der Wissenschaften。 265–327 ページ 。 1 2 Brenner, Norman M.; Rader, Charles M. (1976). "高速フーリエ変換の新しい原理". IEEE Transactions on Acoustics, Speech, and Signal Processing . 24 (3): 264– 266. Bibcode : 1976ITASS..24..264R . doi : 10.1109/TASSP.1976.1162805 . 1 2 Winograd, Shmuel (1978). "離散フーリエ変換の計算について" . Mathematics of Computation . 32 (141): 175– 199. doi : 10.1090/S0025-5718-1978-0468306-4 . JSTOR 2006266 . PMC 430186 . PMID 16592303 . ↑ Winograd, Shmuel (1979). "離散フーリエ変換の乗法的な複雑さについて" . Advances in Mathematics . 32 (2): 83– 117. doi : 10.1016/0001-8708(79)90037-9 . ↑ Rader, CM (1968). "データサンプル数が素数の場合の離散フーリエ変換" .Proceedings of the IEEE . 56 (6): 1107–1108 . doi : 10.1109/PROC.1968.6477 . ISSN 0018-9219 . ↑ Bluestein, L. (1970 年 12 月). 「離散フーリエ変換の計算に対する線形フィルタリングアプローチ」 . IEEE Transactions on Audio and Electroacoustics . 18 (4): 451– 455. doi : 10.1109/TAU.1970.1162132 . ISSN 0018-9278 . ↑ Wilson, Joseph N. (2011-04-01). "アレイセットアドレッシング: 六角形サンプリング画像の効率的な処理を可能にする技術" . Journal of Electronic Imaging . 20 (2): 023012. doi : 10.1117/1.3589306 . ISSN 1017-9909 . 1 2 Sorensen, Henrik V.; Jones, Douglas L. ; Heideman, Michael T.; Burrus, Charles Sidney (1987). "実数値高速フーリエ変換アルゴリズム". IEEE Transactions on Acoustics, Speech, and Signal Processing . 35 (6): 849– 863. Bibcode : 1987ITASS..35..849S . CiteSeerX 10.1.1.205.4523 . doi : 10.1109/TASSP.1987.1165220 . ↑ ソレンセン、ヘンリック V.、 ジョーンズ、ダグラス L. 、ハイデマン、マイケル T.、 バーラス、チャールズ シドニー (1987)。「実数値高速フーリエ変換アルゴリズム」の訂正 ". IEEE Transactions on Acoustics, Speech, and Signal Processing . 35 (9): 1353. Bibcode : 1987ITASS..35R1353S . doi : 10.1109/TASSP.1987.1165284 .↑ Heideman, Michael T.; Burrus, Charles Sidney (1986). "長さ2 nの DFTを計算するために必要な乗算回数について ". IEEE Transactions on Acoustics, Speech, and Signal Processing . 34 (1): 91–95 . Bibcode : 1986ITASS..34...91H . doi : 10.1109/TASSP.1986.1164785 . 1 2 Duhamel, Pierre (1990). "長さ2 n DFTの乗法複雑性の下限を満たすアルゴリズム と実用アルゴリズムとの関連". IEEE Transactions on Acoustics, Speech, and Signal Processing . 38 (9): 1504– 1511. doi : 10.1109/29.60070 . ↑ Morgenstern, Jacques (1973). "高速フーリエ変換の線形複雑度の下限に関する注記" . Journal of the ACM . 20 (2): 305–306 . doi : 10.1145/321752.321761 . S2CID 2790142 . ↑ Pan, Victor Ya. (1986-01-02). "線形アルゴリズムと双線形アルゴリズムの加算的複雑性と非同期性のトレードオフ" . Information Processing Letters . 22 (1): 11– 14. doi : 10.1016/0020-0190(86)90035-9 . 2017-10-31 に取得 。 ↑ Papadimitriou, Christos H. (1979). "高速フーリエ変換の最適性" . Journal of the ACM . 26 (1): 95– 102. doi : 10.1145/322108.322118 . S2CID 850634 . ↑ Lundy, Thomas J.; Van Buskirk, James (2007). "長さ 2 k の実 FFT と畳み込みに対する新しい行列アプローチ ". Computing . 80 (1): 23– 45. doi : 10.1007/s00607-007-0222-6 . S2CID 27296044 . ↑ Haynal, Steve; Haynal, Heidi (2011). "FFTアルゴリズムのファミリーの生成と探索" (PDF) . Journal on Satisfiability, Boolean Modeling and Computation . 7 (4): 145– 187. arXiv : 1103.5740 . Bibcode : 2011arXiv1103.5740H . doi : 10.3233/SAT190084 . S2CID 173109 . 2012年4月26日に オリジナル (PDF) からアーカイブ済み。 1 2 Duhamel, Pierre; Vetterli, Martin (1990). "高速フーリエ変換:チュートリアルレビューと最新技術" . Signal Processing . 19 (4): 259– 299. Bibcode : 1990SigPr..19..259D . doi : 10.1016/0165-1684(90)90158-U . ↑ エデルマン、アラン、マコーコデール、ピーター、トレド、シヴァン (1999)。 「未来の高速フーリエ変換?」 (PDF) 。SIAM Journal on Scientific Computing 。20 (3): 1094– 1114。CiteSeerX 10.1.1.54.9339 。doi : 10.1137/S1064827597316266 。 2017年7 月 5 日 にオリジナルから アーカイブ (PDF) 。 ↑ Guo, Haitao; Burrus, Charles Sidney (1996). "高速近似フーリエ変換によるウェーブレット変換". In Unser, Michael A.; Aldroubi, Akram; Laine, Andrew F. (eds.). Wavelet Applications in Signal and Image Processing IV . Proceedings of SPIE . Vol. 2825. pp. 250–259 . Bibcode : 1996SPIE.2825..250G . CiteSeerX 10.1.1.54.3984 . doi : 10.1117/12.255236 . S2CID 120514955 . ↑ シェントフ、オグニャン V.。ミトラ、サンジット K.ホイテ、ウルリッヒ;ホッセン、アブドゥル N. (1995)。 「サブバンド DFT。I. 定義、解釈、および拡張」。 信号処理 。 41 (3): 261–277 。 土井 : 10.1016/0165-1684(94)00103-7 。 ↑ Hassanieh, Haitham; Indyk, Piotr ; Katabi, Dina; Price, Eric (2012年1月)。 「スパースフーリエ変換のためのシンプルで実用的なアルゴリズム」 (PDF) 。ACM -SIAM離散アルゴリズムシンポジウム 。 2012年3月4日のオリジナルから アーカイブ (PDF) 。 (注:sFFTのウェブページも参照してください。)↑ Schatzman, James C. (1996). "離散フーリエ変換と高速フーリエ変換の精度" . SIAM Journal on Scientific Computing . 17 (5): 1150– 1166. Bibcode : 1996SJSC...17.1150S . CiteSeerX 10.1.1.495.9184 . doi : 10.1137/s1064827593247023 . ↑ Welch, Peter D. (1969). "固定小数点高速フーリエ変換誤差解析". IEEE Transactions on Audio and Electroacoustics . 17 (2): 151–157 . Bibcode : 1969ITAuE..17..151W . doi : 10.1109/TAU.1969.1162035 . ↑ Ergün, Funda (1995). 「多変数線形関数のテスト」. 第27回ACM理論計算機科学シンポジウム(STOC '95)論文集 . 京都、日本. pp. 407–416 . doi : 10.1145/225058.225167 . ISBN 978-0897917186 . S2CID 15512806 . {{cite book}}: CS1メンテナンス: 場所の発行元が見つかりません (リンク)↑ Nussbaumer, Henri J. (1977). "多項式変換を用いたデジタルフィルタリング". Electronics Letters . 13 (13): 386–387 . Bibcode : 1977ElL....13..386N . doi : 10.1049/el:19770280 . ↑ Mohlenkamp, Martin J. (1999). "球面調和関数の高速変換" (PDF) . Journal of Fourier Analysis and Applications . 5 ( 2– 3): 159– 184. Bibcode : 1999JFAA....5..159M . CiteSeerX 10.1.1.135.9830 . doi : 10.1007/BF01261607 . S2CID 119482349 . 2017-05-06 のオリジナルから アーカイブ (PDF) . 2018-01-11 に取得 . ↑ "libftshライブラリ" 。 2010年6月23日に オリジナルからアーカイブされました 。 2007年1月9日 に取得。 ↑ Rokhlin, Vladimir; Tygert, Mark (2006). "球面調和展開のための高速アルゴリズム" (PDF) . SIAM Journal on Scientific Computing . 27 (6): 1903– 1928. Bibcode : 2006SJSC...27.1903R . CiteSeerX 10.1.1.125.7415 . doi : 10.1137/050623073 . 2014-12-17 のオリジナルから アーカイブ (PDF) . 2014-09-18 に取得 . ↑ Staelin, DH (1969). "周期パルス列検出のための高速折り畳みアルゴリズム" . Proceedings of the IEEE . 57 (4): 724–725 . doi : 10.1109/PROC.1969.7051 . ISSN 0018-9219 . ↑ Potts, Daniel; Steidl, Gabriele ; Tasche, Manfred (2001). "非等間隔データに対する高速フーリエ変換: チュートリアル" (PDF) . In Benedetto, JJ; Ferreira, P. (eds.). Modern Sampling Theory: Mathematics and Applications . Birkhäuser . 2007年9月26日のオリジナルから アーカイブ (PDF) 。 ↑ バージェス、リチャード・ジェームズ(2014)。 音楽制作の歴史 。オックスフォード大学出版局 。ISBN 978-0199357178 2019年8月1日 に取得 。↑ Chu, Eleanor; George, Alan (1999-11-11) [1999-11-11]. 「第16章」. Inside the FFT Black Box: Serial and Parallel Fast Fourier Transform Algorithms . CRC Press . pp. 153–168 . ISBN 978-1-42004996-1 。↑ Fernandez-de-Cossio Diaz, Jorge; Fernandez-de-Cossio, Jorge (2012-08-08). "フーリエ変換による同位体ピーク中心質量分布の計算". Analytical Chemistry . 84 (16): 7052– 7056. doi : 10.1021/ac301296a . ISSN 0003-2700 . PMID 22873736 . ↑ 「高速フーリエ変換とその応用」、IEEE Signal Processing Magazine。 1 2 Anwar, K., et al.「LTE規格のためのダブルFFT」IEEE Xplore。 ↑ Kijewski-Correa, T.; Kareem, A. (2006 年 10 月). "時間周波数解析におけるヒルベルト変換とウェーブレット変換の有効性" . Journal of Engineering Mechanics . 132 (10): 1037– 1049. doi : 10.1061/(ASCE)0733-9399(2006)132:10(1037) . ISSN 0733-9399 . ↑ Stern, Richard M. (2020). "短時間フーリエ変換に関する注記" (PDF) . 2025年2月8日のオリジナルから アーカイブ (PDF) . 2025年2月8日 に取得 . ↑ Cormen, Thomas H.; Nicol, David M. (1998). "並列ディスクシステムでのアウトオブコアFFTの実行". Parallel Computing . 24 (1): 5–20 . CiteSeerX 10.1.1.44.8212 . doi : 10.1016/S0167-8191(97)00114-2 . S2CID 14996854 . ↑ Dutt, Alok; Rokhlin, Vladimir (1993-11-01). "非等間隔データに対する高速フーリエ変換". SIAM Journal on Scientific Computing . 14 (6): 1368–1393 . Bibcode : 1993SJSC...14.1368D . doi : 10.1137/0914081 . ISSN 1064-8275 . ↑ Rockmore, Daniel N. (2004). "Recent Progress and Applications in Group FFTs". In Byrnes, Jim (ed.). Computational Noncommutative Algebra and Applications . NATO Science Series II: Mathematics, Physics and Chemistry. Vol. 136. Springer Netherlands. pp. 227–254 . CiteSeerX 10.1.1.324.4700 . doi : 10.1007/1-4020-2307-3_9 . ISBN 978-1-4020-1982-1 . S2CID 1412268 . ↑ 朝香亮、酒井和光、矢萩涼子 (2020). 「高速フーリエ変換のための量子回路」 . 量子情報処理 . 19 (277): 277. arXiv : 1911.03055 . Bibcode : 2020QuIP...19..277A . doi : 10.1007/s11128-020-02776-5 . S2CID 207847474 . ↑ 「Arm Performance Libraries」 . Arm . 2020. 2020年12月16日 取得 。 ↑ 「C/C++ FFTライブラリの完全なリスト」 。VCV コミュニティ 。2020年4月5日。 2021年3月3日 取得 。
さらに読む ブリガム、エルバート・オラン(1974)。高速 フーリエ変換 (Nachdr 編)。ニュージャージー州エングルウッド・クリフス:プレンティス・ホール 。ISBN 978-0-13-307496-3 。 ブリッグス、 ウィリアム・L.、ヘンソン、ヴァン・エムデン(1995)。『DFT:離散フーリエ変換の取扱説明書 』フィラデルフィア:応用数理学会 。ISBN 978-0-89871-342-8 。Chu, Eleanor; George, Alan (2000). Inside the FFT Black Box: Serial and Parallel Fast Fourier Transform Algorithms . Computational mathematics series. Boca Raton, Fla. London: CRC Press . ISBN 978-0-8493-0270-1 。 Cormen, Thomas H. ; Leiserson, Charles E. ; Rivest, Ronald L. ; Stein, Clifford (2001). 「第 30 章: 多項式と FFT」.アルゴリズム入門 (第 2 版). Cambridge (Mass.): MIT Press . ISBN 978-0-262-03293-3 。エリオット、ダグラス F.、ラオ、K. ラマモハン (1982)。高速変換:アルゴリズム、解析、応用 。 ニューヨーク:アカデミックプレス 。ISBN 978-0-12-237080-9 。 Guo, H.; Sitton, GA; Burrus, CS (1994). 「高速離散フーリエ変換」. ICASSP '94 会議録. IEEE 国際音響・音声・信号処理会議 . 第 3 巻. IEEE . pp. III/445–III/448. doi : 10.1109/ICASSP.1994.389994 . ISBN 978-0-7803-1775-8 . S2CID 42639206 . Johnson, Steven G.; Frigo, Matteo (2007 年 1 月). "算術演算回数を減らした修正版分割基数 FFT" (PDF) . IEEE Transactions on Signal Processing . 55 (1): 111– 119. Bibcode : 2007ITSP...55..111J . CiteSeerX 10.1.1.582.5497 . doi : 10.1109/TSP.2006.882087 . ISSN 1053-587X . S2CID 14772428 . 2005 年 5 月 26 日にオリジナルからアーカイブ( PDF) 。 ヌスバウマー、ヘンリ J. (1990)。高速フーリエ変換および畳み込みアルゴリズム 。情報科学における Springer シリーズ (2.、修正および更新 版)。ベルリン ハイデルベルク:シュプリンガー 。ISBN 978-3-540-11825-1 。 Press, William H. ; Teukolsky, Saul A. ; Vetterling, William T.; Flannery, Brian P. (2007). 「第 12 章 高速フーリエ変換」. Numerical Recipes: the art of scientific computing (PDF) . Numerical Recipes (第 3 版). Cambridge: Cambridge University Press . pp. 600–639 . ISBN 978-0-521-88068-8 。Singleton, R. (1969年6月). 「高速フーリエ変換に関する短い参考文献」. IEEE Transactions on Audio and Electroacoustics . 17 (2): 166–169 . Bibcode : 1969ITAuE..17..166S . doi : 10.1109/TAU.1969.1162040 . ISSN 0018-9278 . (注:詳細な参考文献リストが含まれています。)Prestini, Elena (2004).応用調和解析の進化:現実世界のモデル . 応用および数値調和解析. ボストン; ベルリン: Springer Media . セクション 3.10: ガウスと小惑星: FFT の歴史. ISBN 978-0-8176-4125-2 。 ヴァン・ローン、チャールズ・F. (1992).高速フーリエ変換のための計算フレームワーク . 応用数学の最前線. フィラデルフィア:応用数理学会 . ISBN 978-0-89871-285-8 。 テラス、オードリー(1999)。有限群上のフーリエ解析とその応用 。ロンドン数学会学生テキスト。ケンブリッジ(英国):ケンブリッジ大学出版 局 。ISBN 978-0-521-45718-7 。 (第9章およびその他の章)
外部リンク 多項式乗算のための高速フーリエ変換– 高速フーリエアルゴリズム 高速フーリエ変換(FFT) – C ++によるFFTプログラミング– クーリー・テューキーアルゴリズム オンラインドキュメント、リンク、書籍、コード Sri Welaratna、「FFTアナライザーの30年の歴史(2014年1月12日にWayback Machine に アーカイブ)」、Sound and Vibration (1997年1月号、創刊30周年記念号)– ハードウェアFFTデバイスの歴史的レビュー ALGLIB FFTコード– デュアル/GPLライセンスの多言語(VBA、C++、Pascalなど)対応数値解析およびデータ処理ライブラリ SFFT:スパース高速フーリエ変換– MITのスパース(準線形時間)FFTアルゴリズム、sFFT、およびその実装 VB6 FFT – ソースコード付きのVB6最適化ライブラリ実装 インタラクティブFFTチュートリアル– フーリエ変換とFFTメソッドの視覚的インタラクティブ入門 時系列データのフーリエ解析入門– 時系列解析におけるフーリエ変換の使い方に関するチュートリアル