レッスン
理論 — 高速フーリエ変換
高速フーリエ変換(FFT)とは、丸め誤差を除いて離散フーリエ変換 X[k] = Σ x[n] Wkn (W = e−2πi/N)を正確に計算するアルゴリズムであり、N² 回の代わりに約 N log N 回の演算で済みます。クーリー・テューキー型は N = N1N2 と分割します。まず長さ N1 の変換を N2 個インターリーブし、変換 n2 の各出力 k1 に固有の回転因子 Wn2k1 を掛け、次にそれらをまたぐように長さ N2 の変換を N1 個実行します。これを N = 2m に対して繰り返し適用したものが基数2のFFTであり、N/2 個のバタフライからなる m 個のステージになります。
各記号の意味
N- サンプル数、および計算される周波数の数
W- 1の冪根 e−2πi/N。この累乗が回転因子になる
m- log2N、基数2のFFTのステージ数
全プロセスの詳細解説
-
ガウスのもう一つの例:ジュノー、36の値 4 ステップ
ガウス手稿の第41項では、10°ごとに取られた36の値からジュノーの中心差を補間し、これを 6 × 6 に分割しています。クーリーとテューキーの計算によれば、直接和にはどれだけの演算が必要で、ガウスの分割によってどれだけ削減でき、さらに細かく分割すればより良くなるでしょうか。 まず ガウス、長さ4の周期×3 を押してください。このページでは12の値に対しても同じように計算しています。
-
直接和、周波数1つ・サンプル1つにつき1回の演算:
-
ガウスの分割、長さ6の周期を6つ:クーリー・テューキーの2段階の計算量は、Nと因数の和の積になる。
-
最後まで分割した場合、36 = 2 × 2 × 3 × 3:
-
クーリーとテューキーの法則:s, t > 1 となる因数 r = st は、s = t = 2 の場合を除き、常に s + t < r となる:
解答
直接和で 1,296 回、ガウスの 6 × 6 の分割で 432 回、最後まで分割すると 360 回の演算になります。 ガウスの分割の時点で計算量は3分の1になっており、最も細かい分割ではそこからさらに6分の1が削減されます。このページの12の値でも同様に、直接和で 144 回、分割で 84 回になります。4を 2 × 2 に分割してもコストは同じなので、最後まで分割しても 12 × (2 + 2 + 3) = 84 回のままです。
-
学習の道すじ
フーリエ変換の実際
参考文献 (3)
- Gauss's manuscript on trigonometric interpolation, printed after his death. Article 28 is the page's Gauss mode: twelve declinations of the northern limit of Pallas's zodiac at every 30° of right ascension, split into three periods of four and into four periods of three. Article 27 says the split extends to three or more factors and that practice will teach whoever tries it ("praxis tentantem docebit"); article 41 works Juno's equation of the centre from 36 values with the eccentricity 0.254236. The editor's note calls the text a reworking of a draft apparently begun in October 1805: C. F. Gauss, Theoria interpolationis methodo nova tractata (Nachlass). Werke, Band III, Königliche Gesellschaft der Wissenschaften, Göttingen, 1866; second printing 1876, where the treatise begins on p. 265 and arts. 25–28 are on pp. 303–310.
- The paper that showed Gauss's split is the Cooley–Tukey FFT: the change of index n = N₂n₁ + n₂, k = k₁ + N₁k₂ written as Gauss's procedure, his examples (N = 12 as 4 × 3 and 3 × 4, N = 36 as 6 × 6), the dating to October–November 1805 from the Juno eccentricity and other clues, and what the manuscript does not contain: "Gauss did not, however, go on to quantify the computational requirements of his method": M. T. Heideman, D. H. Johnson and C. S. Burrus, Gauss and the history of the fast Fourier transform. IEEE ASSP Magazine 1(4), 14–21 (October 1984). doi:10.1109/MASSP.1984.1162257
- The paper that made the FFT standard: the split N = r₁r₂ with T = N(r₁ + r₂) operations, its repetition to T = N(r₁ + … + r_m), the radix-2 form with bit-reversed order, and the count of N² operations for the direct sum against fewer than 2N log₂N, where an operation is a complex multiplication followed by a complex addition: J. W. Cooley and J. W. Tukey, An algorithm for the machine calculation of complex Fourier series. Mathematics of Computation 19(90), 297–301 (1965). doi:10.1090/S0025-5718-1965-0178586-1