({{, (RefLink[FourierMatrix, paclet:ref/FourierMatrix])[n] 
returns an n×n Fourier matrix.}})

OpenersNotesSection(Spacer1)Details and Options

(RefLink[FourierMatrix, paclet:ref/FourierMatrix]) of order n returns a list of the length-n discrete Fourier transform's basis sequences.

Each entry (Subscript[F, rs]) of the Fourier matrix is by default defined as (1/(Sqrt[n]))(e^(2π i (r-1)(s-1)/n)).

Rows of the (RefLink[FourierMatrix, paclet:ref/FourierMatrix]) are basis sequences of the discrete Fourier transform.

The result F of (RefLink[FourierMatrix, paclet:ref/FourierMatrix])[n] is symmetric and unitary, meaning that (F^(-1)) is (RefLink[Conjugate, paclet:ref/Conjugate])[F].

The result of (RefLink[FourierMatrix, paclet:ref/FourierMatrix])[n].list is equivalent to (RefLink[Fourier, paclet:ref/Fourier])[list] when list has length n. However, the computation of (RefLink[Fourier, paclet:ref/Fourier])[list] is much faster and has less numerical error. »

With the setting (RefLink[FourierParameters, paclet:ref/FourierParameters])->{a,b}, entry (Subscript[F, rs]) of the Fourier matrix is defined as (1/(n^((1-a)/2)))(e^(2π i b(r-1)(s-1)/n)). The default setting is (RefLink[FourierParameters, paclet:ref/FourierParameters])->{0,1}.

(RefLink[FourierMatrix, paclet:ref/FourierMatrix])[…,(RefLink[WorkingPrecision, paclet:ref/WorkingPrecision])->p] gives a matrix with entries of precision p.

OpenersPrimaryExamplesSection(Spacer1)Examples  (4)

OpenersExampleSection0(Spacer1)Basic Examples  (1)

A 4×4 Fourier matrix:

FourierMatrix[4]//MatrixForm

OpenersExampleSection1(Spacer1)Scope  (1)

The real and imaginary parts of the Fourier's basis sequences of length 128:

f=FourierMatrix[128];
{ArrayPlot[Re[f]],ArrayPlot[Im[f]]}

OpenersExampleSection2(Spacer1)Options  (1)

OpenersExampleSubsection0(Spacer1)WorkingPrecision  (1)

Use machine precision:

FourierMatrix[3,WorkingPrecision->MachinePrecision]//MatrixForm

Use arbitrary precision:

FourierMatrix[3,WorkingPrecision->20]//MatrixForm

OpenersExampleSection3(Spacer1)Properties & Relations  (1)

The Fourier transform of a vector is equivalent to the vector multiplied by a Fourier matrix:

data= RandomReal[1,6];
FourierMatrix[6] . data ==Fourier[data]

(RefLink[Fourier, paclet:ref/Fourier]) is much faster than the matrix-based computation:

data=RandomReal[1,1024];
{AbsoluteTiming[Do[Fourier[data],{10}];],
AbsoluteTiming[Do[FourierMatrix[1024,WorkingPrecision->MachinePrecision].data,{10}];]}

({{DocumentationFooterIconsRelatedFunction.png, ({{See Also}, {(RefLink[FourierDCTMatrix, paclet:ref/FourierDCTMatrix])  ▪  (RefLink[FourierDSTMatrix, paclet:ref/FourierDSTMatrix])  ▪  (RefLink[HadamardMatrix, paclet:ref/HadamardMatrix])  ▪  (RefLink[Fourier, paclet:ref/Fourier])}})}})

({{DocumentationFooterIconsRelatedGuide.png, ({{Related Guides}, {▪(RefLinkPlain[Signal Processing, paclet:guide/SignalProcessing])}, {▪(RefLinkPlain[Summation Transforms, paclet:guide/SummationTransforms])}})}})