Content deleted Content added
→Evaluating the convolution: remove dubious claims (see Talk), which were unsourced anyway |
|||
(6 intermediate revisions by 5 users not shown) | |||
Line 1:
{{Short description|Discrete Fourier transform for prime sizes}}
'''Rader's algorithm''' (1968),<ref>C. M. Rader, "Discrete Fourier transforms when the number of data samples is prime," ''Proc. IEEE'' 56, 1107–1108 (1968).</ref> named for Charles M. Rader of [[MIT Lincoln Laboratory]], is a [[fast Fourier transform]] (FFT) algorithm that computes the [[discrete Fourier transform]] (DFT) of [[prime number|prime]] sizes by re-expressing the DFT as a cyclic [[convolution]] (the other algorithm for FFTs of prime sizes, [[Bluestein's FFT algorithm|Bluestein's algorithm]], also works by rewriting the DFT as a convolution).
Line 8 ⟶ 9:
==Algorithm==
[[File:FFT visual Rader 11.jpg|thumb|Visual representation of a [[DFT matrix]] in Rader's FFT algorithm
Begin with the definition of the discrete Fourier transform:
:<math> X_k = \sum_{n=0}^{N-1} x_n e^{-\frac{2\pi i}{N} nk }
\qquad
k = 0,\dots,N-1. </math>
If ''N'' is a prime number, then the set of non-zero indices
:<math> X_0 = \sum_{n=0}^{N-1} x_n,</math>
Line 21 ⟶ 24:
p = 0,\dots,N-2. </math>
(Recall that ''x''<sub>''n''</sub> and ''X''<sub>''k''</sub> are implicitly periodic in ''N'', and also that
The final summation, above, is precisely a cyclic convolution of the two sequences ''a''<sub>''q''</sub> and ''b''<sub>''q''</sub> (of length ''N''–1,
:<math>a_q = x_{g^q}</math>
Line 34 ⟶ 37:
This algorithm, then, requires O(''N'') additions plus O(''N'' log ''N'') time for the convolution. In practice, the O(''N'') additions can often be performed by absorbing the additions into the convolution: if the convolution is performed by a pair of FFTs, then the sum of ''x''<sub>''n''</sub> is given by the DC (0th) output of the FFT of ''a''<sub>''q''</sub> plus ''x''<sub>0</sub>, and ''x''<sub>0</sub> can be added to all the outputs by adding it to the DC term of the convolution prior to the inverse FFT. Still, this algorithm requires intrinsically more operations than FFTs of nearby composite sizes, and typically takes 3–10 times as long in practice.
If Rader's algorithm is performed by using FFTs of size ''N''–1 to compute the convolution, rather than by zero padding as mentioned above, the efficiency depends strongly upon ''N'' and the number of times that Rader's algorithm must be applied recursively. The worst case would be if ''N''–1 were 2''N''<sub>2</sub> where ''N''<sub>2</sub> is prime, with ''N''<sub>2</sub>–1 = 2''N''<sub>3</sub> where ''N''<sub>3</sub> is prime, and so on
==References==
|