cannam@127: cannam@127: cannam@127: cannam@127: cannam@127:
cannam@127:cannam@127: Next: 1d Real-odd DFTs (DSTs), Previous: The 1d Real-data DFT, Up: What FFTW Really Computes [Contents][Index]
cannam@127:The Real-even symmetry DFTs in FFTW are exactly equivalent to the unnormalized cannam@127: forward (and backward) DFTs as defined above, where the input array cannam@127: X of length N is purely real and is also even symmetry. In cannam@127: this case, the output array is likewise real and even symmetry. cannam@127: cannam@127: cannam@127:
cannam@127: cannam@127: cannam@127:For the case of REDFT00
, this even symmetry means that
cannam@127: Xj = XN-j,where we take X to be periodic so that
cannam@127: XN = X0.Because of this redundancy, only the first n real numbers are
cannam@127: actually stored, where N = 2(n-1).
cannam@127:
The proper definition of even symmetry for REDFT10
,
cannam@127: REDFT01
, and REDFT11
transforms is somewhat more intricate
cannam@127: because of the shifts by 1/2 of the input and/or output, although
cannam@127: the corresponding boundary conditions are given in Real even/odd DFTs (cosine/sine transforms). Because of the even symmetry, however,
cannam@127: the sine terms in the DFT all cancel and the remaining cosine terms are
cannam@127: written explicitly below. This formulation often leads people to call
cannam@127: such a transform a discrete cosine transform (DCT), although it is
cannam@127: really just a special case of the DFT.
cannam@127:
cannam@127:
cannam@127:
In each of the definitions below, we transform a real array X of cannam@127: length n to a real array Y of length n: cannam@127:
cannam@127: cannam@127:An REDFT00
transform (type-I DCT) in FFTW is defined by:
cannam@127:
An REDFT10
transform (type-II DCT, sometimes called “the” DCT) in FFTW is defined by:
cannam@127:
An REDFT01
transform (type-III DCT) in FFTW is defined by:
cannam@127:
REDFT10
(“the” DCT), and so the REDFT01
(DCT-III) is sometimes called the “IDCT”.
cannam@127:
cannam@127:
cannam@127:
cannam@127: An REDFT11
transform (type-IV DCT) in FFTW is defined by:
cannam@127:
These definitions correspond directly to the unnormalized DFTs used
cannam@127: elsewhere in FFTW (hence the factors of 2 in front of the
cannam@127: summations). The unnormalized inverse of REDFT00
is
cannam@127: REDFT00
, of REDFT10
is REDFT01
and vice versa, and
cannam@127: of REDFT11
is REDFT11
. Each unnormalized inverse results
cannam@127: in the original array multiplied by N, where N is the
cannam@127: logical DFT size. For REDFT00
, N=2(n-1) (note that
cannam@127: n=1 is not defined); otherwise, N=2n.
cannam@127:
cannam@127:
In defining the discrete cosine transform, some authors also include cannam@127: additional factors of cannam@127: √2(or its inverse) multiplying selected inputs and/or outputs. This is a cannam@127: mostly cosmetic change that makes the transform orthogonal, but cannam@127: sacrifices the direct equivalence to a symmetric DFT. cannam@127:
cannam@127:cannam@127: Next: 1d Real-odd DFTs (DSTs), Previous: The 1d Real-data DFT, Up: What FFTW Really Computes [Contents][Index]
cannam@127: