Member Login
Username:Password:
or Sign up here
Discover

DISCRETE FOURIER TRANSFORM


In mathematics, the 'discrete Fourier transform (DFT)', occasionally called the finite Fourier transform, is a transform for Fourier analysis of finite-domain discrete-time signals. As with most Fourier analysis, it expresses an input function in terms of a sum of sinusoidal components by determining the amplitude and phase of each component. However, the DFT is distinguished by the fact that its input function is ''discrete'' and ''finite'': the input to the DFT is a finite sequence of real or complex numbers, which makes the DFT ideal for processing information stored in computers. In particular, the DFT is widely employed in signal processing and related fields to analyze the frequencies contained in a sampled signal, to solve partial differential equations, and to perform other operations such as convolutions. The DFT can be computed efficiently in practice using a fast Fourier transform (FFT) algorithm.
Since FFT algorithms are so commonly employed to compute the DFT, the two terms are often used interchangeably in colloquial settings, although there is a clear distinction: "DFT" refers to a mathematical transformation, regardless of how it is computed, while "FFT" refers to any one of several efficient algorithms for the DFT. This distinction is further blurred, however, by the synonym "finite Fourier transform" for the DFT, which apparently predates the term "fast Fourier transform" (Cooley et al., 1969) but has the same initialism.

Contents
Definition
Properties
Completeness
Orthogonality
The Plancherel theorem and Parseval's theorem
Periodicity
The shift theorem
Circular convolution theorem and cross-correlation theorem
Trigonometric interpolation polynomial
The unitary DFT
Expressing the inverse DFT in terms of the DFT
Eigenvalues and eigenvectors
The real-input DFT
Generalized/shifted DFT
Multidimensional DFT
Applications
Spectral analysis
Data compression
Partial differential equations
Polynomial multiplication
Multiplication of large integers
Some discrete Fourier transform pairs
Derivation as Fourier series
See also
References
External links

Definition


The sequence of ''N'' complex numbers ''x''0, ..., ''x''''N''−1 is transformed into the sequence of ''N'' complex numbers ''X''0, ..., ''X''''N''−1 by the DFT according to the formula:
:X_k = sum_{n=0}^{N-1} x_n e^{- rac{2 pi i}{N} k n} quad quad k = 0, dots, N-1
where ''e'' is the base of the natural logarithm, i, is the imaginary unit (i^2=-1), and π is pi. The transform is sometimes denoted by the symbol mathcal{F}, as in mathbf{X} = mathcal{F} left { mathbf{x}
ight } or mathcal{F} left ( mathbf{x}
ight ) or mathcal{F} mathbf{x}.
The 'inverse discrete Fourier transform (IDFT)' is given by
:x_n = rac{1}{N} sum_{k=0}^{N-1} X_k e^{ rac{2pi i}{N} k n} quad quad n = 0,dots,N-1.
A simple description of these equations is that the complex numbers X_k represent the amplitude and phase of the different sinusoidal components of the input "signal" x_n. The DFT computes the X_k from the x_n, while the IDFT shows how to compute the x_n as a sum of sinusoidal components X_k exp(2pi i k n / N)/N with frequency k/N cycles per sample. By writing the equations in this form, we are making extensive use of Euler's formula to express sinusoids in terms of complex exponentials, which are much easier to manipulate. (In the same way, by writing X_k in polar form, we immediately obtain the sinusoid amplitude from |X_k| and the phase from the complex argument.) An important subtlety of this representation, aliasing, is discussed below.
Note that the normalization factor multiplying the DFT and IDFT (here 1 and 1/''N'') and the signs of the exponents are merely conventions, and differ in some treatments. The only requirements of these conventions are that the DFT and IDFT have opposite-sign exponents and that the product of their normalization factors be 1/''N''. A normalization of 1/sqrt{N} for both the DFT and IDFT makes the transforms unitary, which has some theoretical advantages, but it is often more practical in numerical computation to perform the scaling all at once as above (and a unit scaling can be convenient in other ways).
(The convention of a negative sign in the exponent is often convenient because it means that X_k is the amplitude of a "positive frequency" 2pi k/N. Equivalently, the DFT is often thought of as a matched filter: when looking for a frequency of +1, one correlates the incoming signal with a frequency of −1.)
In the following discussion the terms "sequence" and "vector" will be considered interchangeable.

Properties


Completeness

The discrete Fourier transform is an invertible, linear transformation
:mathcal{F}:mathbb{C}^N o mathbb{C}^N
with mathbb{C} denoting the set of complex numbers. In other words, for any ''N'' > 0, an ''N''-dimensional complex vector has a DFT and an IDFT which are in turn ''N''-dimensional complex vectors.
Orthogonality

The vectors e^{ rac{2pi i}{N} kn} form an orthogonal basis over the set of
''N''-dimensional complex vectors:
:sum_{n=0}^{N-1}
left(e^{ rac{2pi i}{N} kn}
ight)
left(e^{- rac{2pi i}{N} k'n}
ight)
=N~delta_{kk'}

where ~delta_{kk'} is the Kronecker delta. This orthogonality condition can be used to derive the formula for the IDFT from the definition of the DFT.
The Plancherel theorem and Parseval's theorem

If ''X''''k'' and ''Y''''k'' are the DFTs of ''x''''n'' and ''y''''n'' respectively then Plancherel theorem states:
:sum_{n=0}^{N-1} x_n y^
★ _n = rac{1}{N} sum_{k=0}^{N-1} X_k Y^
★ _k
where the star denotes complex conjugation. Parseval's theorem is a special case of the Plancherel theorem and states:
:sum_{n=0}^{N-1} |x_n|^2 = rac{1}{N} sum_{k=0}^{N-1} |X_k|^2.
Periodicity

If the expression that defines the DFT is evaluated for all integers k instead of just for k = 0, dots, N-1 , then the resulting infinite sequence is a periodic extension of the DFT, periodic with period ''N''.
The periodicity can be shown directly from the definition:
X_{k+N} = sum_{n=0}^{N-1} x_n e^{- rac{2pi i}{N} (k+N) n} =
sum_{n=0}^{N-1} x_n e^{- rac{2pi i}{N} k n} e^{-2 pi i n} = sum_{n=0}^{N-1} x_n e^{- rac{2pi i}{N} k n} = X_k
where we have used the fact that e^{-2pi i} = 1.
In the same way it can be shown that the IDFT formula leads to a periodic extension.
The shift theorem

Multiplying x_n by a ''linear phase'' e^{ rac{2pi i}{N}n m} for some integer m corresponds to a ''circular shift'' of the output X_k: X_k is replaced by X_{k-m}, where the subscript is interpreted modulo N (i.e. periodically). Similarly, a circular shift of the input x_n corresponds to multiplying the output X_k by a linear phase. Mathematically, if {x_n} represents the vector 'x' then
:if mathcal{F}({x_n})_k=X_k
:then mathcal{F}({ x_n e^{ rac{2pi i}{N}n m} })_k=X_{k-m}
:and mathcal{F}({x_{n-m}})_k=X_k e^{- rac{2pi i}{N}k m}
Circular convolution theorem and cross-correlation theorem

The cyclic or circular convolution 'x'
★ 'y' of the two vectors 'x' = ''xk''  and 'y' = ''yn''  is the vector 'x'
★ 'y' with components
:(mathbf{x
★ y})_n = sum_{m=0}^{N-1} x_m y_{n-m} quad quad n = 0,dots,N-1
where we continue 'y' cyclically so that
:y_{-m} = y_{N-m}quadquad~~~~~~~~~~ m = 0, dots, N-1
The discrete Fourier transform turns cyclic convolutions into component-wise multiplication. That is, if
:z_n = (mathbf{x
★ y})_n
then
:Z_k=X_k Y_k quad quad~~~~~~~~~~ k = 0,dots,N-1
where capital letters (''X'', ''Y'', ''Z'') represent the DFTs of sequences represented by small letters (''x'', ''y'', ''z''). Note that if a different normalization convention is adopted for the DFT (e.g., the unitary normalization), then there will in general be a constant factor multiplying the above relation.
The direct evaluation of the convolution summation, above, would require O(N^2) operations, but the DFT (via an FFT) provides an O(Nlog N) method to compute the same thing. Conversely, convolutions can be used to efficiently compute DFTs via Rader's FFT algorithm and Bluestein's FFT algorithm. The method can be extended to non-circular signals using overlap-add method.[1]
''See also:'' Convolution theorem
In an analogous manner, it can be shown that if z_n is the cross-correlation of x_n and y_n:
:z_n=(mathbf{x
★ y})_n = sum_{m=0}^{N-1}x_m^
★ ,y_{m+n}
where the sum is again cyclic in ''m'', then the discrete Fourier transform of z_n is:
:Z_k = X_k^
★ ,Y_k
where capital letters are again used to signify the discrete Fourier transform.
Trigonometric interpolation polynomial

The trigonometric interpolation polynomial
:p(t) = rac{X_0}{N} + rac{X_1}{N} e^{it} + cdots + rac{X_{N/2}}{N} cos(Nt/2) + rac{X_{N/2+1}}{N} e^{(-N/2+1)it} + cdots + rac{X_{N-1}}{N} e^{-it} for N even ,
:p(t) = rac{X_0}{N} + rac{X_1}{N} e^{it} + cdots + rac{X_{lfloor N/2
floor}}{N} e^{lfloor N/2
floor it} + rac{X_{lfloor N/2
floor+1}}{N} e^{-lfloor N/2
floor it} + cdots + rac{X_{N-1}}{N} e^{-it} for N odd,
where the coefficients ''X''''k'' /''N'' are given by the DFT of ''x''''n'' above, satisfies the interpolation property p(2pi n/N) = x_n for n=0,ldots,N-1.
For even N, notice that the Nyquist component rac{X_{N/2}}{N} cos(Nt/2) is handled specially.
This interpolation is ''not unique'': aliasing implies that one could add ''N'' to any of the complex-sinusoid frequencies (e.g. changing e^{-it} to e^{i(N-1)t} ) without changing the interpolation property, but giving ''different'' values in between the x_n points. The choice above, however, is typical because it has two useful properties. First, it consists of sinusoids whose frequencies have the smallest possible magnitudes, and therefore minimizes the mean-square slope int |p'(t)|^2 dt of the interpolating function. Second, if the x_n are real numbers, then p(t) is real as well.
In contrast, the most obvious trigonometric interpolation polynomial is the one in which the frequencies range from 0 to N-1 (instead of roughly -N/2 to +N/2 as above), similar to the inverse DFT formula. This interpolation does ''not'' minimize the slope, and is ''not'' generally real-valued for real x_n; its use is a common mistake.
The unitary DFT

Another way of looking at the DFT is to note that in the above discussion, the DFT can be expressed as a Vandermonde matrix:
:mathbf{F} =
egin{bmatrix}
omega_N^{0 cdot 0} & omega_N^{0 cdot 1} & ldots & omega_N^{0 cdot (N-1)} \
omega_N^{1 cdot 0} & omega_N^{1 cdot 1} & ldots & omega_N^{1 cdot (N-1)} \
dots & dots & ddots & dots \
omega_N^{(N-1) cdot 0} & omega_N^{(N-1) cdot 1} & ldots & omega_N^{(N-1) cdot (N-1)} \
end{bmatrix}

where
:omega_N = e^{-2 pi i/N},
is a primitive Nth root of unity. The inverse transform is then given by the inverse of the above matrix:
:mathbf{F}^{-1}= rac{1}{N}mathbf{F}^

With unitary normalization constants 1/sqrt{N}, the DFT becomes a unitary transformation, defined by a unitary matrix:
:mathbf{U}=mathbf{F}/sqrt{N}
:mathbf{U}^{-1}=mathbf{U}^

:|det(mathbf{U})|=1
where ''det()''  is the determinant function. The determinant is the product of the eigenvalues, and therefore (see below) is always pm 1 or pm i. In a real vector space, a unitary transformation can be thought of as simply a rigid rotation of the coordinate system, and all of the properties of a rigid rotation can be found in the unitary DFT.
The orthogonality of the DFT is now expressed as an orthonormality condition (which arises in many areas of mathematics as described in root of unity):
:sum_{m=0}^{N-1}U_{km}U_{mn}^
★ =delta_{kn}
If mathbf{X} is defined as the unitary DFT of the vector mathbf{x} then
:X_k=sum_{n=0}^{N-1} U_{kn}x_n
and the Plancherel theorem is expressed as:
:sum_{n=0}^{N-1}x_n y_n^
★ = sum_{k=0}^{N-1}X_k Y_k^

If we view the DFT as just a coordinate transformation which simply specifies the components of a vector in a new coordinate system, then the above is just the statement that the dot product of two vectors is preserved under a unitary DFT transformation. For the special case mathbf{x} = mathbf{y}, this implies that the length of a vector is preserved as well—this is just Parseval's theorem:
:sum_{n=0}^{N-1}|x_n|^2 = sum_{k=0}^{N-1}|X_k|^2
Expressing the inverse DFT in terms of the DFT

A useful property of the DFT is that the inverse DFT can be easily expressed in terms of the (forward) DFT, via several well-known "tricks". (For example, in computations, it is often convenient to only implement a fast Fourier transform corresponding to one transform direction and then to get the other transform direction from the first.)
First, we can compute the inverse DFT by reversing the inputs:
:mathcal{F}^{-1}({x_n}) = mathcal{F}({x_{N - n}}) / N
(As usual, the subscripts are interpreted modulo N; thus, for n=0, we have x_{N-0}=x_0.)
Second, one can also conjugate the inputs and outputs:
:mathcal{F}^{-1}(mathbf{x}) = mathcal{F}(mathbf{x}^
★ )^
★ / N
Third, a variant of this conjugation trick, which is sometimes preferable because it requires no modification of the data values, involves swapping real and imaginary parts (which can be done on a computer simply by modifying pointers). Define swap(x_n) as x_n with its real and imaginary parts swapped—that is, if x_n = a + b i then swap(x_n) is b + a i. Equivalently, swap(x_n) equals i x_n^
★ . Then
:mathcal{F}^{-1}(mathbf{x}) = extrm{swap}(mathcal{F}( extrm{swap}(mathbf{x}))) / N
That is, the inverse transform is the same as the forward transform with the real and imaginary parts swapped for both input and output, up to a normalization (Duhamel ''et al.'', 1988).
The conjugation trick can also be used to define a new transform, closely related to the DFT, that is involutary—that is, which is its own inverse. In particular, T(mathbf{x}) = mathcal{F}(mathbf{x}^
★ ) / sqrt{N} is clearly its own inverse: T(T(mathbf{x})) = mathbf{x}. A closely related involutary transformation (by a factor of (1+''i'') /√2) is H(mathbf{x}) = mathcal{F}((1+i) mathbf{x}^
★ ) / sqrt{2N}, since the (1+i) factors in H(H(mathbf{x})) cancel the 2. For real inputs mathbf{x}, the real part of H(mathbf{x}) is none other than the discrete Hartley transform, which is also involutary.
Eigenvalues and eigenvectors

The eigenvalues of the DFT matrix are simple and well-known, whereas the eigenvectors are complicated, not unique, and are the subject of ongoing research.
Consider the unitary form mathbf{U} defined above for the DFT of length N, where mathbf{U}_{m,n} = omega_N^{mn}/sqrt{N} = exp(-2pi i mn/N)/sqrt{N}. This matrix satisfies the equation:
:mathbf{U}^4 = mathbf{I}.
This can be seen from the inverse properties above: operating mathbf{U} twice gives the original data in reverse order, so operating mathbf{U} four times gives back the original data and is thus the identity matrix. This means that the eigenvalues lambda satisfy a characteristic equation:
:lambda^4 = 1.
Therefore, the eigenvalues of mathbf{U} are the fourth roots of unity: lambda is +1, −1, +''i'', or −''i''.
Since there are only four distinct eigenvalues for this N imes N matrix, they have some multiplicity. The multiplicity gives the number of linearly independent eigenvectors corresponding to each eigenvalue. (Note that there are ''N'' independent eigenvectors; the matrix is not defective.)
The problem of their multiplicity was solved by McClellan and Parks (1972), although it was later shown to have been equivalent to a problem solved by Gauss (Dickinson and Steiglitz, 1982). The multiplicity depends on the value of N modulo 4, and is given by the following table:
Multiplicities of the eigenvalues λ of the unitary DFT matrix 'U' as a function of the transform size ''N'' (in terms of an integer ''m'').
size ''N'' λ = +1 λ = −1 λ = +''i'' λ = −''i''
4''m'' ''m'' + 1 ''m'' ''m'' ''m'' − 1
4''m'' + 1 ''m'' + 1 ''m'' ''m'' ''m''
4''m'' + 2 ''m'' + 1 ''m'' + 1 ''m'' ''m''
4''m'' + 3 ''m'' + 1 ''m'' + 1 ''m'' + 1 ''m''

Unfortunately, no simple analytical formula for the eigenvectors is known. Moreover, the eigenvectors are not unique because any linear combination of eigenvectors for the same eigenvalue is also an eigenvector for that eigenvalue. Various researchers have proposed different choices of eigenvectors, selected to satisfy useful properties like orthogonality and to have "simple" forms (e.g., McClellan and Parks, 1972; Dickinson and Steiglitz, 1982; Grünbaum, 1982; Atakishiyev and Wolf, 1997; Candan ''et al.'', 2000; Hanna ''et al.'', 2004).
The choice of eigenvectors of the DFT matrix has become important in recent years in order to define a discrete analogue of the fractional Fourier transform—the DFT matrix can be taken to fractional powers by exponentiating the eigenvalues (e.g., Rubio and Santhanam, 2005). For the continuous Fourier transform, the natural orthogonal eigenfunctions are the Hermite functions, so various discrete analogues of these have been employed as the eigenvectors of the DFT, such as the Kravchuk polynomials (Atakishiyev and Wolf, 1997). The "best" choice of eigenvectors to define a fractional discrete Fourier transform remains an open question, however.
The real-input DFT

If x_0, ldots, x_{N-1} are real numbers, as they often are in practical applications, then the DFT obeys the symmetry:
:X_k = X_{N-k}^
★ ,
where the star denotes complex conjugation and the subscripts are interpreted modulo ''N''.
Therefore, the DFT output for real inputs is half redundant, and one obtains the complete information by only looking at roughly half of the outputs X_0, ldots, X_{N-1}. In this case, the "DC" element X_0 is purely real, and for even ''N'' the "Nyquist" element X_{N/2} is also real, so there are exactly ''N'' non-redundant real numbers in the first half + Nyquist element of the complex output ''X''.
Using Euler's formula, the interpolating trigonometric polynomial can then be interpreted as a sum of sine and cosine functions.

Generalized/shifted DFT


It is possible to shift the transform sampling in time and/or frequency domain by some real shifts ''a'' and ''b'', respectively. This is sometimes known as a 'generalized DFT' (or 'GDFT'), also called the 'shifted DFT' or 'offset DFT', and has analogous properties to the ordinary DFT:
:X_k = sum_{n=0}^{N-1} x_n e^{- rac{2 pi i}{N} (k+b) (n+a)} quad quad k = 0, dots, N-1
Most often, shifts of 1/2 (half a sample) are used.
While the ordinary DFT corresponds to a periodic signal in both time and frequency domains, a=1/2 produces a signal that is anti-periodic in frequency domain (X_{k+N} = - X_k) and vice-versa for b=1/2.
Thus, the specific case of a = b = 1/2 is known as an ''odd-time odd-frequency'' discrete Fourier transform (or O2 DFT).
Such shifted transforms are most often used for symmetric data, to represent different boundary symmetries, and for real-symmetric data they correspond to different forms of the discrete cosine and sine transforms.
Another interesting choice is a=b=-(N-1)/2, which is called the 'centered DFT' (or 'CDFT'). The centered DFT has the useful property that, when N is a multiple of four, all four of its eigenvalues (see above) have equal multiplicities (Rubio and Santhanam, 2005).
The discrete Fourier transform can be viewed as a special case of the z-transform, evaluated on the unit circle in the complex plane; more general z-transforms correspond to ''complex'' shifts ''a'' and ''b'' above.

Multidimensional DFT


The ordinary DFT computes the transform of a "one-dimensional" dataset: a sequence (or array) x_n that is a function of one discrete variable n. More generally, one can define the 'multidimensional' DFT of a multidimensional array x_{n_1, n_2, dots, n_d} that is a function of d discrete variables n_ell = 0, 1, dots, N_ell-1 for ell in 1, 2, dots, d:
:X_{k_1, k_2, dots, k_d} = sum_{n_1=0}^{N_1-1} left(omega_{N_1}^{~k_1 n_1} sum_{n_2=0}^{N_2-1} left( omega_{N_2}^{~k_2 n_2} cdots sum_{n_d=0}^{N_d-1} omega_{N_d}^{~k_d n_d}cdot x_{n_1, n_2, dots, n_d}
ight) cdots
ight) , ,
where omega_{N_ell} = exp(-2pi i/N_ell) as above and the d output indices run from k_ell = 0, 1, dots, N_ell-1. This is more compactly expressed in vector notation, where we define mathbf{n} = (n_1, n_2, dots, n_d) and mathbf{k} = (k_1, k_2, dots, k_d) as d-dimensional vectors of indices from 0 to mathbf{N} - 1, which we define as mathbf{N} - 1 = (N_1 - 1, N_2 - 1, dots, N_d - 1):
:X_mathbf{k} = sum_{mathbf{n}=0}^{mathbf{N}-1} e^{-2pi i mathbf{k} cdot (mathbf{n} / mathbf{N})} x_mathbf{n} , ,
where the division mathbf{n} / mathbf{N} is defined as mathbf{n} / mathbf{N} = (n_1/N_1, dots, n_d/N_d) to be performed element-wise, and the sum denotes the set of nested summations above.
The inverse of the multi-dimensional DFT is, analogous to the one-dimensional case, given by:
:x_mathbf{n} = rac{1}{prod_{ell=1}^d N_ell} sum_{mathbf{k}=0}^{mathbf{N}-1} e^{2pi i mathbf{n} cdot (mathbf{k} / mathbf{N})} X_mathbf{k} , .
The multidimensional DFT has a simple interpretation. Just as the one-dimensional DFT expresses the input x_n as a superposition of sinusoids, the multidimensional DFT expresses the input as a superposition of plane waves, or sinusoids oscillating along the direction mathbf{k} / mathbf{N} in space and having amplitude X_mathbf{k}. Such a decomposition is of great importance for everything from digital image processing (''d'' = 2) to solving partial differential equations in three dimensions (''d'' = 3) by breaking the solution up into plane waves.
Computationally, the multidimensional DFT is simply the composition of a sequence of one-dimensional DFTs along each dimension. For example, in the two-dimensional case x_{n_1,n_2} one can first compute the N_1 independent DFTs of the rows (i.e., along n_2) to form a new array y_{n_1,k_2}, and then compute the N_2 independent DFTs of y along the columns (along n_1) to form the final result X_{k_1,k_2}. Or, one can transform the columns and then the rows—the order is immaterial because the nested summations above commute.
Because of this, given a way to compute a one-dimensional DFT (e.g. an ordinary one-dimensional FFT algorithm), one immediately has a way to efficiently compute the multidimensional DFT. This is known as a ''row-column'' algorithm, although there are also intrinsically multidimensional FFT algorithms.

Applications


The DFT has seen wide usage across a large number of fields; we only sketch a few examples below (see also the references at the end). All applications of the DFT depend crucially on the availability of a fast algorithm to compute discrete Fourier transforms and their inverses, a fast Fourier transform.
Spectral analysis

When the DFT is used for spectral analysis, the {x_n}, sequence usually represents a finite set of uniformly-spaced time-samples of some signal x(t),, where ''t'' represents time. The conversion from continuous time to samples (discrete-time) changes the underlying Fourier transform of x(t) into a discrete-time Fourier transform (DTFT), which generally entails a type of distortion called aliasing. Choice of an appropriate sample-rate (see Nyquist frequency) is the key to minimizing that distortion. Similarly, the conversion from a very long (or infinite) sequence to a manageable size entails a type of distortion called ''leakage'', which is manifested as a loss of detail (aka resolution) in the DTFT. Choice of an appropriate sub-sequence length is the primary key to minimizing that effect. When the available data (and time to process it) is more than the amount needed to attain the desired frequency resolution, a standard technique is to perform multiple DFTs, for example to create a spectrogram. If the desired result is a power spectrum and noise or randomness is present in the data, averaging the magnitude components of the multiple DFTs is a useful procedure to reduce the variance of the spectrum (also called a periodogram in this context); two examples of such techniques are the Welch method and the Bartlett method.
A final source of distortion (or perhaps ''illusion'') is the DFT itself, because it is just a discrete sampling of the DTFT, which is a function of a continuous frequency domain. That can be mitigated by increasing the resolution of the DFT. That procedure is illustrated in the discrete-time Fourier transform article.

★ The procedure is sometimes referred to as ''zero-padding'', which is a particular implementation used in conjunction with the fast Fourier transform (FFT) algorithm. The inefficiency of performing multiplications and additions with zero-valued "samples" is more than offset by the inherent efficiency of the FFT.

★ As already noted, leakage imposes a limit on the inherent resolution of the DTFT. So there is a practical limit to the benefit that can be obtained from a fine-grained DFT.
Data compression

The field of digital signal processing relies heavily on operations in the frequency domain (i.e. on the Fourier transform). For example, several lossy image and sound compression methods employ the discrete Fourier transform: the signal is cut into short segments, each is transformed, and then the Fourier coefficients of high frequencies, which are assumed to be unnoticeable, are discarded. The decompressor computes the inverse transform based on this reduced number of Fourier coefficients. (Compression applications often use a specialized form of the DFT, the discrete cosine transform or sometimes the modified discrete cosine transform).
Partial differential equations

Discrete Fourier transforms are often used to solve partial differential equations, where again the DFT is used as an approximation for the Fourier series (which is recovered in the limit of infinite ''N''). The advantage of this approach is that it expands the signal in complex exponentials ''e''''inx'', which are eigenfunctions of differentiation: ''d''/''dx'' ''e''''inx'' = ''in'' ''e''''inx''. Thus, in the Fourier representation, differentiation is simple—we just multiply by ''i n''. A linear differential equation with constant coefficients is transformed into an easily solvable algebraic equation. One then uses the inverse DFT to transform the result back into the ordinary spatial representation. Such an approach is called a spectral method.
Polynomial multiplication

Suppose we wish to compute the polynomial product ''c''(''x'') = ''a''(''x'') · ''b''(''x''). The ordinary product expression for the coefficients of ''c'' involves a linear (acyclic) convolution, where indices do not "wrap around." This can be rewritten as a cyclic convolution by taking the coefficient vectors for ''a''(''x'') and ''b''(''x'') with constant term first, then appending zeros so that the resultant coefficient vectors 'a' and 'b' have dimension ''d'' > deg(''a''(''x'')) + deg(''b''(''x'')). Then,
:mathbf{c} = mathbf{a}
★ mathbf{b}
Where 'c' is the vector of coefficients for ''c''(''x''), and the convolution operator
★ , is defined so
:c_n = sum_{m=0}^{d-1}a_m b_{n-m mathrm{mod} d} qquadqquadqquad n=0,1,...,d-1
But convolution becomes multiplication under the DFT:
:mathcal{F}(mathbf{c}) = mathcal{F}(mathbf{a})mathcal{F}(mathbf{b})
Here the vector product is taken elementwise. Thus the coefficients of the product polynomial ''c''(''x'') are just the terms 0, ..., deg(''a''(''x'')) + deg(''b''(''x'')) of the coefficient vector
:mathbf{c} = mathcal{F}^{-1}(mathcal{F}(mathbf{a})mathcal{F}(mathbf{b})).
With a Fast Fourier transform, the resulting algorithm takes O (''N'' log ''N'') arithmetic operations. Due to its simplicity and speed, the Cooley-Tukey FFT algorithm, which is limited to composite sizes, is often chosen for the transform operation. In this case, ''d'' should be chosen as the smallest integer greater than the sum of the input polynomial degrees that is factorizable into small prime factors (e.g. 2, 3, and 5, depending upon the FFT implementation).
Multiplication of large integers

The fastest known algorithms for the multiplication of very large integers use the polynomial multiplication method outlined above. Integers can be treated as the value of a polynomial evaluated specifically at the number base, with the coefficients of the polynomial corresponding to the digits in that base. After polynomial multiplication, a relatively low-complexity carry-propagation step completes the multiplication.

Some discrete Fourier transform pairs


{| class="wikitable" style="text-align: center;"
|+ 'Some DFT pairs'
|-
! x_n = rac{1}{N}sum_{k=0}^{N-1}X_k cdot e^{i 2 pi kn/N}
! X_k = sum_{n=0}^{N-1}x_n cdot e^{-i 2 pi kn/N}
! Note
|-
| x_n cdot e^{i 2 pi nl/N} ,
| X_{k-l},
| rowspan="2"| Shift theorem
|-
| x_{n-l},
| X_k cdot e^{-i 2 pi kl/N}
|-
| x_n in mathbb{R}
| X_k=X_{N-k}^
★ ,
| Real DFT
|-
| a^n,
| rac{1-a^N}{1-a cdot e^{-i 2 pi k/N} }
|
|-
| {N-1 choose n},
| left(1+e^{-i 2 pi k/N}
ight)^{N-1},
|
|}

Derivation as Fourier series


Main articles: A derivation of the discrete Fourier transform

The DFT can be derived as a truncation of the Fourier series of a periodic sequence of impulses.

See also



DFT matrix

References


1. T. G. Stockham, Jr., "High-speed convolution and correlation," in 1966 ''Proc. AFIPS Spring Joint Computing Conf.'' Reprinted in Digital Signal Processing, L. R. Rabiner and C. M. Rader, editors, New York: IEEE Press, 1972.


The fast Fourier transform and its applications, , E. Oran, Brigham, Prentice Hall, 1988, ISBN 0-13-307505-2

Discrete-time signal processing, Oppenheim, Alan V.; Schafer, R. W.; and Buck, J. R., , , Prentice Hall, 1999, ISBN 0-13-754920-2

The Scientist and Engineer's Guide to Digital Signal Processing, , Steven W., Smith, California Technical Publishing, 1997, ISBN 0-9660176-3-3

Introduction to Algorithms, , Thomas H., Cormen, MIT Press and McGraw-Hill, 2001, ISBN 0-262-03293-7 esp. section 30.2: The DFT and FFT, pp.830–838.

On computing the inverse DFT, P. Duhamel, B. Piron, and J. M. Etcheto, , , IEEE Trans. Acoust., Speech and Sig. Processing, 1988

Eigenvalues and eigenvectors of the discrete Fourier transformation, J. H. McClellan and T. W. Parks, , , IEEE Trans. Audio Electroacoust., 1972

Eigenvectors and functions of the discrete Fourier transform, Bradley W. Dickinson and Kenneth Steiglitz, , , IEEE Trans. Acoust., Speech and Sig. Processing, 1982

The eigenvectors of the discrete Fourier transform, F. A. Grünbaum, , , J. Math. Anal. Appl., 1982

Fractional Fourier-Kravchuk transform, Natig M. Atakishiyev and Kurt Bernardo Wolf, , , J. Opt. Soc. Am. A, 1997

The discrete fractional Fourier transform, C. Candan, M. A. Kutay and H. M.Ozaktas, , , IEEE Trans. On Signal Processing, 2000

Hermite-Gaussian-like eigenvectors of the discrete Fourier transform matrix based on the singular-value decomposition of its orthogonal projection matrices, Magdy Tawfik Hanna, Nabila Philip Attalla Seif, and Waleed Abd El Maguid Ahmed, , , IEEE Trans. Circ. Syst. I, 2004

On the multiangle centered discrete fractional Fourier transform, Juan G. Vargas-Rubio and Balu Santhanam, , , IEEE Sig. Proc. Lett., 2005

The finite Fourier transform, J. Cooley, P. Lewis, and P. Welch, , , IEEE Trans. Audio Electroacoustics, 1969

External links



Mathematics of the Discrete Fourier Transform by Julius O. Smith III

Fast implementation of the DFT - coded in C and under General Public License (GPL)

This article provided by Wikipedia. To edit the contents of this article, click here for original source.