d@0: d@0: d@0: 1d Real-odd DFTs (DSTs) - FFTW 3.2.1 d@0: d@0: d@0: d@0: d@0: d@0: d@0: d@0: d@0: d@0: d@0: d@0: d@0: d@0:
d@0:

d@0: d@0: d@0: Next: , d@0: Previous: 1d Real-even DFTs (DCTs), d@0: Up: What FFTW Really Computes d@0:


d@0:
d@0: d@0:

4.8.4 1d Real-odd DFTs (DSTs)

d@0: d@0:

The Real-odd symmetry DFTs in FFTW are exactly equivalent to the unnormalized d@0: forward (and backward) DFTs as defined above, where the input array d@0: X of length N is purely real and is also odd symmetry. In d@0: this case, the output is odd symmetry and purely imaginary. d@0: d@0: For the case of RODFT00, this odd symmetry means that d@0: Xj = -XN-j,where we take X to be periodic so that d@0: XN = X0. Because of this redundancy, only the first n real numbers d@0: starting at j=1 are actually stored (the j=0 element is d@0: zero), where N = 2(n+1). d@0: d@0:

The proper definition of odd symmetry for RODFT10, d@0: RODFT01, and RODFT11 transforms is somewhat more intricate d@0: because of the shifts by 1/2 of the input and/or output, although d@0: the corresponding boundary conditions are given in Real even/odd DFTs (cosine/sine transforms). Because of the odd symmetry, however, d@0: the cosine terms in the DFT all cancel and the remaining sine terms are d@0: written explicitly below. This formulation often leads people to call d@0: such a transform a discrete sine transform (DST), although it is d@0: really just a special case of the DFT. d@0: d@0: In each of the definitions below, we transform a real array X of d@0: length n to a real array Y of length n: d@0: d@0:

RODFT00 (DST-I)
d@0: d@0:

An RODFT00 transform (type-I DST) in FFTW is defined by: d@0:

.
d@0: d@0:
RODFT10 (DST-II)
d@0: d@0:

An RODFT10 transform (type-II DST) in FFTW is defined by: d@0:

.
d@0: d@0:
RODFT01 (DST-III)
d@0: d@0:

An RODFT01 transform (type-III DST) in FFTW is defined by: d@0:

.
In the case of n=1, this reduces to d@0: Y0 = X0. d@0: d@0:
RODFT11 (DST-IV)
d@0: d@0:

An RODFT11 transform (type-IV DST) in FFTW is defined by: d@0:

.
d@0: d@0:
Inverses and Normalization
d@0: d@0:

These definitions correspond directly to the unnormalized DFTs used d@0: elsewhere in FFTW (hence the factors of 2 in front of the d@0: summations). The unnormalized inverse of RODFT00 is d@0: RODFT00, of RODFT10 is RODFT01 and vice versa, and d@0: of RODFT11 is RODFT11. Each unnormalized inverse results d@0: in the original array multiplied by N, where N is the d@0: logical DFT size. For RODFT00, N=2(n+1); d@0: otherwise, N=2n. d@0: d@0: In defining the discrete sine transform, some authors also include d@0: additional factors of d@0: √2(or its inverse) multiplying selected inputs and/or outputs. This is a d@0: mostly cosmetic change that makes the transform orthogonal, but d@0: sacrifices the direct equivalence to an antisymmetric DFT. d@0: d@0: d@0: d@0: