Fourier

Fourier[list]

finds the discrete Fourier transform of a list of complex numbers.

Fourier[list,{p1,p2,}]

returns the specified positions of the discrete Fourier transform.

Details and Options

  • The discrete Fourier transform vs of a list ur of length n is by default defined to be ure2π i(r-1)(s-1)/n. »
  • Note that the zero frequency term appears at position 1 in the resulting list.
  • Other definitions are used in some scientific and technical fields.
  • Different choices of definitions can be specified using the option FourierParameters.
  • With the setting FourierParameters->{a,b}, the discrete Fourier transform computed by Fourier is ure2π i b(r-1)(s-1)/n. »
  • Some common choices for {a,b} are {0,1} (default), {-1,1} (data analysis), {1,-1} (signal processing).
  • The setting effectively corresponds to conjugating both input and output lists.
  • To ensure a unique inverse discrete Fourier transform, b must be relatively prime to n. »
  • The list of data supplied to Fourier need not have a length equal to a power of two.
  • The list given in Fourier[list] can be nested to represent an array of data in any number of dimensions.
  • The array of data must be rectangular.
  • If the elements of list are exact numbers, Fourier begins by applying N to them.
  • Fourier[list,{p1,p2,}] is typically equivalent to Extract[Fourier[list],{p1,p2,}]. Cases with just a few positions p are computed using an algorithm that takes less time and memory but is more subject to numerical error, particularly when the length of list is long.
  • Fourier can be used on SparseArray objects.

Examples

open allclose all

Basic Examples  (2)

Find a discrete Fourier transform:

Find a power spectrum:

Scope  (3)

x is a list of real values:

Compute the Fourier transform with machine arithmetic:

Compute using 24-digit precision arithmetic:

Compute a 2D Fourier transform:

x is a rank 3 tensor with nonzero diagonal:

Compute the 3D Fourier transform:

Options  (2)

FourierParameters  (2)

No normalization:

Normalization by :

Normalization by :

Data from a Sinc function with noise:

Ordinary spectrum without normalization:

Partial spectrum:

Applications  (10)

Computing Spectra  (6)

Fourier spectrum of "white noise":

Show the logarithmic spectrum, including the first (DC) component:

The spectrum of a "pulse" is completely flat:

Power spectrum of the ThueMorse nested sequence [more info]:

Power spectrum of the Fibonacci nested sequence [more info]:

2D power spectrum of a nested pattern:

Plot the nested pattern:

Find the logarithmic power spectrum:

Find the Fourier transform of the rule 30 cellular automaton pattern:

Logarithmic power spectrum:

Filtering Data  (1)

Compute discrete cyclic convolutions to smooth a discontinuous function with a Gaussian:

Compute the cyclic convolution:

Show the original and smoothed function:

The convolution is consistent with ListConvolve:

Frequency Identification  (1)

Here is some periodic data with some noise:

Find the maximum modes in the spectrum:

Get the position corresponding to positive frequencies and show the position on a plot of the spectrum:

Find a high-resolution spectrum between modes where the maximum was found:

Determine the period from the frequencies:

Computing Eigenvectors  (1)

m is a circulant differentiation matrix:

Because , the eigenvalues of m are:

The eigenvectors are the columns of the DFT matrix, so Fourier diagonalizes m:

This allows very efficient computation of MatrixExp[m,r] for a particular vector:

Show the approximate evolution of the heat equation on the unit interval:

Fractional Fourier Transform  (1)

Define a fractional Fourier transform using different choices of FourierParameters:

Properties & Relations  (6)

InverseFourier inverts Fourier:

For real inputs, all elements after the first come in complex conjugate pairs:

The power spectrum is symmetric:

Cyclic convolution corresponds to multiplication of Fourier transforms:

is given by :

Fourier is equivalent to matrix multiplication:

The conjugate transpose of the matrix is equivalent to InverseFourier:

Possible Issues  (4)

If is not relatively prime to , the transform may not be invertible:

Lengths that are powers of 2 or factorizable into a product of small primes will be faster:

Fourier uses an efficient algorithm when only a small number of coefficients is needed:

The fast and efficient implementation may result in significant numerical error:

Introduced in 1988
 (1.0)
 |
Updated in 1996
 (3.0)
1999
 (4.0)
2000
 (4.1)
2002
 (4.2)
2003
 (5.0)
2012
 (9.0)