comparison src/fftw-3.3.3/doc/html/The-Halfcomplex_002dformat-DFT.html @ 10:37bf6b4a2645

Add FFTW3
author Chris Cannam
date Wed, 20 Mar 2013 15:35:50 +0000
parents
children
comparison
equal deleted inserted replaced
9:c0fb53affa76 10:37bf6b4a2645
1 <html lang="en">
2 <head>
3 <title>The Halfcomplex-format DFT - FFTW 3.3.3</title>
4 <meta http-equiv="Content-Type" content="text/html">
5 <meta name="description" content="FFTW 3.3.3">
6 <meta name="generator" content="makeinfo 4.13">
7 <link title="Top" rel="start" href="index.html#Top">
8 <link rel="up" href="More-DFTs-of-Real-Data.html#More-DFTs-of-Real-Data" title="More DFTs of Real Data">
9 <link rel="prev" href="More-DFTs-of-Real-Data.html#More-DFTs-of-Real-Data" title="More DFTs of Real Data">
10 <link rel="next" href="Real-even_002fodd-DFTs-_0028cosine_002fsine-transforms_0029.html#Real-even_002fodd-DFTs-_0028cosine_002fsine-transforms_0029" title="Real even/odd DFTs (cosine/sine transforms)">
11 <link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
12 <!--
13 This manual is for FFTW
14 (version 3.3.3, 25 November 2012).
15
16 Copyright (C) 2003 Matteo Frigo.
17
18 Copyright (C) 2003 Massachusetts Institute of Technology.
19
20 Permission is granted to make and distribute verbatim copies of
21 this manual provided the copyright notice and this permission
22 notice are preserved on all copies.
23
24 Permission is granted to copy and distribute modified versions of
25 this manual under the conditions for verbatim copying, provided
26 that the entire resulting derived work is distributed under the
27 terms of a permission notice identical to this one.
28
29 Permission is granted to copy and distribute translations of this
30 manual into another language, under the above conditions for
31 modified versions, except that this permission notice may be
32 stated in a translation approved by the Free Software Foundation.
33 -->
34 <meta http-equiv="Content-Style-Type" content="text/css">
35 <style type="text/css"><!--
36 pre.display { font-family:inherit }
37 pre.format { font-family:inherit }
38 pre.smalldisplay { font-family:inherit; font-size:smaller }
39 pre.smallformat { font-family:inherit; font-size:smaller }
40 pre.smallexample { font-size:smaller }
41 pre.smalllisp { font-size:smaller }
42 span.sc { font-variant:small-caps }
43 span.roman { font-family:serif; font-weight:normal; }
44 span.sansserif { font-family:sans-serif; font-weight:normal; }
45 --></style>
46 </head>
47 <body>
48 <div class="node">
49 <a name="The-Halfcomplex-format-DFT"></a>
50 <a name="The-Halfcomplex_002dformat-DFT"></a>
51 <p>
52 Next:&nbsp;<a rel="next" accesskey="n" href="Real-even_002fodd-DFTs-_0028cosine_002fsine-transforms_0029.html#Real-even_002fodd-DFTs-_0028cosine_002fsine-transforms_0029">Real even/odd DFTs (cosine/sine transforms)</a>,
53 Previous:&nbsp;<a rel="previous" accesskey="p" href="More-DFTs-of-Real-Data.html#More-DFTs-of-Real-Data">More DFTs of Real Data</a>,
54 Up:&nbsp;<a rel="up" accesskey="u" href="More-DFTs-of-Real-Data.html#More-DFTs-of-Real-Data">More DFTs of Real Data</a>
55 <hr>
56 </div>
57
58 <h4 class="subsection">2.5.1 The Halfcomplex-format DFT</h4>
59
60 <p>An r2r kind of <code>FFTW_R2HC</code> (<dfn>r2hc</dfn>) corresponds to an r2c DFT
61 <a name="index-FFTW_005fR2HC-72"></a><a name="index-r2c-73"></a><a name="index-r2hc-74"></a>(see <a href="One_002dDimensional-DFTs-of-Real-Data.html#One_002dDimensional-DFTs-of-Real-Data">One-Dimensional DFTs of Real Data</a>) but with &ldquo;halfcomplex&rdquo;
62 format output, and may sometimes be faster and/or more convenient than
63 the latter.
64 <a name="index-halfcomplex-format-75"></a>The inverse <dfn>hc2r</dfn> transform is of kind <code>FFTW_HC2R</code>.
65 <a name="index-FFTW_005fHC2R-76"></a><a name="index-hc2r-77"></a>This consists of the non-redundant half of the complex output for a 1d
66 real-input DFT of size <code>n</code>, stored as a sequence of <code>n</code> real
67 numbers (<code>double</code>) in the format:
68
69 <p><p align=center>
70 r<sub>0</sub>, r<sub>1</sub>, r<sub>2</sub>, ..., r<sub>n/2</sub>, i<sub>(n+1)/2-1</sub>, ..., i<sub>2</sub>, i<sub>1</sub>
71 </p>
72
73 <p>Here,
74 r<sub>k</sub>is the real part of the kth output, and
75 i<sub>k</sub>is the imaginary part. (Division by 2 is rounded down.) For a
76 halfcomplex array <code>hc[n]</code>, the kth component thus has its
77 real part in <code>hc[k]</code> and its imaginary part in <code>hc[n-k]</code>, with
78 the exception of <code>k</code> <code>==</code> <code>0</code> or <code>n/2</code> (the latter
79 only if <code>n</code> is even)&mdash;in these two cases, the imaginary part is
80 zero due to symmetries of the real-input DFT, and is not stored.
81 Thus, the r2hc transform of <code>n</code> real values is a halfcomplex array of
82 length <code>n</code>, and vice versa for hc2r.
83 <a name="index-normalization-78"></a>
84
85 <p>Aside from the differing format, the output of
86 <code>FFTW_R2HC</code>/<code>FFTW_HC2R</code> is otherwise exactly the same as for
87 the corresponding 1d r2c/c2r transform
88 (i.e. <code>FFTW_FORWARD</code>/<code>FFTW_BACKWARD</code> transforms, respectively).
89 Recall that these transforms are unnormalized, so r2hc followed by hc2r
90 will result in the original data multiplied by <code>n</code>. Furthermore,
91 like the c2r transform, an out-of-place hc2r transform will
92 <em>destroy its input</em> array.
93
94 <p>Although these halfcomplex transforms can be used with the
95 multi-dimensional r2r interface, the interpretation of such a separable
96 product of transforms along each dimension is problematic. For example,
97 consider a two-dimensional <code>n0</code> by <code>n1</code>, r2hc by r2hc
98 transform planned by <code>fftw_plan_r2r_2d(n0, n1, in, out, FFTW_R2HC,
99 FFTW_R2HC, FFTW_MEASURE)</code>. Conceptually, FFTW first transforms the rows
100 (of size <code>n1</code>) to produce halfcomplex rows, and then transforms the
101 columns (of size <code>n0</code>). Half of these column transforms, however,
102 are of imaginary parts, and should therefore be multiplied by i
103 and combined with the r2hc transforms of the real columns to produce the
104 2d DFT amplitudes; FFTW's r2r transform does <em>not</em> perform this
105 combination for you. Thus, if a multi-dimensional real-input/output DFT
106 is required, we recommend using the ordinary r2c/c2r
107 interface (see <a href="Multi_002dDimensional-DFTs-of-Real-Data.html#Multi_002dDimensional-DFTs-of-Real-Data">Multi-Dimensional DFTs of Real Data</a>).
108
109 <!-- =========> -->
110 </body></html>
111