|
|
Line 1: |
Line 1: |
| {{ref improve|date=January 2013}}
| | I am Melvina and was born on 24 November 1977. My hobbies are Airsoft and Vehicle restoration.<br><br>Look into my blog - [http://dressupgap.com/profile/lihhs Fifa 15 Coin generator] |
| '''Bluestein's FFT algorithm''' (1968), commonly called the '''chirp z-transform algorithm''' (1969), is a [[fast Fourier transform]] (FFT) algorithm that computes the [[discrete Fourier transform]] (DFT) of arbitrary sizes (including [[prime number|prime]] sizes) by re-expressing the DFT as a [[convolution]]. (The other algorithm for FFTs of prime sizes, [[Rader's FFT algorithm|Rader's algorithm]], also works by rewriting the DFT as a convolution.)
| |
| | |
| In fact, Bluestein's algorithm can be used to compute more general transforms than the DFT, based on the (unilateral) [[z-transform]] (Rabiner ''et al.'', 1969).
| |
| | |
| ==Algorithm==
| |
| | |
| Recall that the DFT is defined by the formula
| |
| | |
| :<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 we replace the product ''nk'' in the exponent by the identity ''nk'' = –(''k''–''n'')<sup>2</sup>/2 + ''n''<sup>2</sup>/2 + ''k''<sup>2</sup>/2, we thus obtain:
| |
| | |
| :<math> X_k = e^{-\frac{\pi i}{N} k^2 } \sum_{n=0}^{N-1} \left( x_n e^{-\frac{\pi i}{N} n^2 } \right) e^{\frac{\pi i}{N} (k-n)^2 }
| |
| \qquad
| |
| k = 0,\dots,N-1. </math>
| |
| | |
| This summation is precisely a convolution of the two sequences ''a''<sub>''n''</sub> and ''b''<sub>''n''</sub> defined by:
| |
| | |
| :<math>a_n = x_n e^{-\frac{\pi i}{N} n^2 }</math>
| |
| :<math>b_n = e^{\frac{\pi i}{N} n^2 },</math>
| |
| | |
| with the output of the convolution multiplied by ''N'' phase factors ''b''<sub>''k''</sub><sup>*</sup>. That is:
| |
| | |
| :<math>X_k = b_k^* \sum_{n=0}^{N-1} a_n b_{k-n} \qquad k = 0,\dots,N-1. </math>
| |
| | |
| This convolution, in turn, can be performed with a pair of FFTs (plus the pre-computed FFT of ''b''<sub>''n''</sub>) via the [[convolution theorem]]. The key point is that these FFTs are not of the same length ''N'': such a convolution can be computed exactly from FFTs only by zero-padding it to a length greater than or equal to 2''N''–1. In particular, one can pad to a [[power of two]] or some other [[smooth number|highly composite]] size, for which the FFT can be efficiently performed by e.g. the [[Cooley–Tukey FFT algorithm|Cooley–Tukey algorithm]] in O(''N'' log ''N'') time. Thus, Bluestein's algorithm provides an O(''N'' log ''N'') way to compute prime-size DFTs, albeit several times slower than the Cooley–Tukey algorithm for composite sizes.
| |
| | |
| The use of zero-padding for the convolution in Bluestein's algorithm deserves some additional comment. Suppose we zero-pad to a length ''M'' ≥ 2''N''–1. This means that ''a''<sub>''n''</sub> is extended to an array ''A''<sub>''n''</sub> of length ''M'', where ''A''<sub>''n''</sub> = ''a''<sub>''n''</sub> for 0 ≤ ''n'' < ''N'' and ''A''<sub>''n''</sub> = 0 otherwise—the usual meaning of "zero-padding". However, because of the ''b''<sub>''k''–''n''</sub> term in the convolution, both positive and ''negative'' values of ''n'' are required for ''b''<sub>''n''</sub> (noting that ''b''<sub>–''n''</sub> = ''b''<sub>''n''</sub>). The periodic boundaries implied by the DFT of the zero-padded array mean that –''n'' is equivalent to ''M''–''n''. Thus, ''b''<sub>''n''</sub> is extended to an array ''B''<sub>''n''</sub> of length ''M'', where ''B''<sub>0</sub> = ''b''<sub>0</sub>, ''B''<sub>''n''</sub> = ''B''<sub>''M''–''n''</sub> = ''b''<sub>''n''</sub> for 0 < ''n'' < ''N'', and ''B''<sub>''n''</sub> = 0 otherwise. ''A'' and ''B'' are then FFTed, multiplied pointwise, and inverse FFTed to obtain the convolution of ''a'' and ''b'', according to the usual convolution theorem.
| |
| | |
| Let us also be more precise about what type of convolution is required in Bluestein's algorithm for the DFT. If the sequence ''b''<sub>''n''</sub> were periodic in ''n'' with period ''N'', then it would be a cyclic convolution of length ''N'', and the zero-padding would be for computational convenience only. However, this is not generally the case:
| |
| :<math>b_{n+N} = e^{\frac{\pi i}{N} (n+N)^2 } = b_n e^{\frac{\pi i}{N} (2Nn+N^2) } = (-1)^N b_n .</math>
| |
| Therefore, for ''N'' [[even and odd numbers|even]] the convolution is cyclic, but in this case ''N'' is [[composite number|composite]] and one would normally use a more efficient FFT algorithm such as Cooley–Tukey. For ''N'' odd, however, then ''b''<sub>''n''</sub> is [[antiperiodic function|antiperiodic]] and we technically have a [[negacyclic convolution]] of length ''N''. Such distinctions disappear when one zero-pads ''a''<sub>''n''</sub> to a length of at least 2''N''−1 as described above, however. It is perhaps easiest, therefore, to think of it as a subset of the outputs of a simple linear convolution (i.e. no conceptual "extensions" of the data, periodic or otherwise).
| |
| | |
| == z-Transforms ==
| |
| | |
| Bluestein's algorithm can also be used to compute a more general transform based on the (unilateral) [[z-transform]] (Rabiner ''et al.'', 1969). In particular, it can compute any transform of the form:
| |
| | |
| :<math> X_k = \sum_{n=0}^{N-1} x_n z^{nk}
| |
| \qquad
| |
| k = 0,\dots,M-1, </math>
| |
| | |
| for an ''arbitrary'' [[complex number]] ''z'' and for ''differing'' numbers ''N'' and ''M'' of inputs and outputs. Given Bluestein's algorithm, such a transform can be used, for example, to obtain a more finely spaced interpolation of some portion of the spectrum (although the frequency resolution is still limited by the total sampling time), enhance arbitrary poles in transfer-function analyses, etcetera.
| |
| | |
| The algorithm was dubbed the ''chirp'' z-transform algorithm because, for the Fourier-transform case (|''z''| = 1), the sequence ''b''<sub>''n''</sub> from above is a complex sinusoid of linearly increasing frequency, which is called a (linear) [[chirp]] in [[radar]] systems.
| |
| | |
| ==References==
| |
| * Leo I. Bluestein, "A linear filtering approach to the computation of the discrete Fourier transform," ''Northeast Electronics Research and Engineering Meeting Record'' '''10''', 218-219 (1968).
| |
| * Lawrence R. Rabiner, Ronald W. Schafer, and Charles M. Rader, "[http://www3.alcatel-lucent.com/bstj/vol48-1969/articles/bstj48-5-1249.pdf The chirp z-transform algorithm and its application]," ''Bell Syst. Tech. J.'' '''48''', 1249-1292 (1969). Also published in: Rabiner, Shafer, and Rader, "The chirp z-transform algorithm," ''IEEE Trans. Audio Electroacoustics'' '''17''' (2), 86–92 (1969).
| |
| * D. H. Bailey and P. N. Swarztrauber, "The fractional Fourier transform and applications," ''[[SIAM Review]]'' '''33''', 389-404 (1991). (Note that this terminology for the z-transform is nonstandard: a [[fractional Fourier transform]] conventionally refers to an entirely different, continuous transform.)
| |
| * Lawrence Rabiner, "The chirp z-transform algorithm—a lesson in serendipity," ''IEEE Signal Processing Magazine'' '''21''', 118-119 (March 2004). (Historical commentary.)
| |
| | |
| ==External links==
| |
| http://www.embedded.com/showArticle.jhtml?articleID=17301593 A DSP algorithm for frequency analysis - the Chirp-Z Transform (CZT)
| |
| | |
| [[Category:FFT algorithms]]
| |
I am Melvina and was born on 24 November 1977. My hobbies are Airsoft and Vehicle restoration.
Look into my blog - Fifa 15 Coin generator