Butterfly diagram: Difference between revisions
added image |
No edit summary |
||
Line 11: | Line 11: | ||
<math>r</math> smaller transforms of size <math>m</math> where |
<math>r</math> smaller transforms of size <math>m</math> where |
||
<math>r</math> is the "radix" of the transform. These smaller DFTs are then |
<math>r</math> is the "radix" of the transform. These smaller DFTs are then |
||
combined with a size-<math>r</math> |
combined with a size-<math>r</math> butterflies, which themselves are DFTs of size |
||
<math>r</math> (performed <math>m</math> times on corresponding outputs of the |
<math>r</math> (performed <math>m</math> times on corresponding outputs of the |
||
sub-transforms) pre-multiplied by [[root of unity|roots of unity]] (known as |
sub-transforms) pre-multiplied by [[root of unity|roots of unity]] (known as |
Revision as of 00:35, 20 September 2005
In the context of fast Fourier transform algorithms, a butterfly is a portion of the computation that combines the results of smaller discrete Fourier transforms (DFTs) into a larger DFT, or vice versa (breaking a larger DFT up into subtransforms). The name "butterfly" comes from the shape of the data-flow diagram in the radix-2 case, as described below.
Most commonly, the term "butterfly" appears in the context of the Cooley-Tukey FFT algorithm, which recursively breaks down a DFT of composite size into smaller transforms of size where is the "radix" of the transform. These smaller DFTs are then combined with a size- butterflies, which themselves are DFTs of size (performed times on corresponding outputs of the sub-transforms) pre-multiplied by roots of unity (known as "twiddle factors"). (This is the "decimation in time" case; one can also perform the steps in reverse, known as "decimation in frequency", where the butterflies comes first and are post-multiplied by twiddle factors. See also the Cooley-Tukey FFT article.)
In the case of the radix-2 Cooley-Tukey algorithm, the butterfly is simply a DFT of size 2 that takes two inputs (corresponding outputs of the two sub-transforms) and gives two outputs by the formula (not including twiddle factors):
If one draws the data-flow diagram for this pair of operations, the to lines cross and resemble somewhat the wings of a butterfly, hence the name. (See also the illustration at right.)