Chris@82: Chris@82: Chris@82: Chris@82: Chris@82: Chris@82: FFTW 3.3.8: The 1d Real-data DFT Chris@82: Chris@82: Chris@82: Chris@82: Chris@82: Chris@82: Chris@82: Chris@82: Chris@82: Chris@82: Chris@82: Chris@82: Chris@82: Chris@82: Chris@82: Chris@82: Chris@82: Chris@82: Chris@82: Chris@82: Chris@82:
Chris@82:

Chris@82: Next: , Previous: , Up: What FFTW Really Computes   [Contents][Index]

Chris@82:
Chris@82:
Chris@82: Chris@82:

4.8.2 The 1d Real-data DFT

Chris@82: Chris@82:

The real-input (r2c) DFT in FFTW computes the forward transform Chris@82: Y of the size n real array X, exactly as defined Chris@82: above, i.e. Chris@82:

.
Chris@82: This output array Y can easily be shown to possess the Chris@82: “Hermitian” symmetry Chris@82: Chris@82: Yk = Yn-k*, Chris@82: where we take Y to be periodic so that Chris@82: Yn = Y0. Chris@82:

Chris@82:

As a result of this symmetry, half of the output Y is redundant Chris@82: (being the complex conjugate of the other half), and so the 1d r2c Chris@82: transforms only output elements 0n/2 of Y Chris@82: (n/2+1 complex numbers), where the division by 2 is Chris@82: rounded down. Chris@82:

Chris@82:

Moreover, the Hermitian symmetry implies that Chris@82: Y0 Chris@82: and, if n is even, the Chris@82: Yn/2 Chris@82: element, are purely real. So, for the R2HC r2r transform, the Chris@82: halfcomplex format does not store the imaginary parts of these elements. Chris@82: Chris@82: Chris@82: Chris@82:

Chris@82: Chris@82:

The c2r and H2RC r2r transforms compute the backward DFT of the Chris@82: complex array X with Hermitian symmetry, stored in the Chris@82: r2c/R2HC output formats, respectively, where the backward Chris@82: transform is defined exactly as for the complex case: Chris@82:

.
Chris@82: The outputs Y of this transform can easily be seen to be purely Chris@82: real, and are stored as an array of real numbers. Chris@82:

Chris@82: Chris@82:

Like FFTW’s complex DFT, these transforms are unnormalized. In other Chris@82: words, applying the real-to-complex (forward) and then the Chris@82: complex-to-real (backward) transform will multiply the input by Chris@82: n. Chris@82:

Chris@82: Chris@82: Chris@82: Chris@82: Chris@82: