comparison src/fftw-3.3.5/doc/html/The-Halfcomplex_002dformat-DFT.html @ 42:2cd0e3b3e1fd

Current fftw source
author Chris Cannam
date Tue, 18 Oct 2016 13:40:26 +0100
parents
children
comparison
equal deleted inserted replaced
41:481f5f8c5634 42:2cd0e3b3e1fd
1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2 <html>
3 <!-- This manual is for FFTW
4 (version 3.3.5, 30 July 2016).
5
6 Copyright (C) 2003 Matteo Frigo.
7
8 Copyright (C) 2003 Massachusetts Institute of Technology.
9
10 Permission is granted to make and distribute verbatim copies of this
11 manual provided the copyright notice and this permission notice are
12 preserved on all copies.
13
14 Permission is granted to copy and distribute modified versions of this
15 manual under the conditions for verbatim copying, provided that the
16 entire resulting derived work is distributed under the terms of a
17 permission notice identical to this one.
18
19 Permission is granted to copy and distribute translations of this manual
20 into another language, under the above conditions for modified versions,
21 except that this permission notice may be stated in a translation
22 approved by the Free Software Foundation. -->
23 <!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
24 <head>
25 <title>FFTW 3.3.5: The Halfcomplex-format DFT</title>
26
27 <meta name="description" content="FFTW 3.3.5: The Halfcomplex-format DFT">
28 <meta name="keywords" content="FFTW 3.3.5: The Halfcomplex-format DFT">
29 <meta name="resource-type" content="document">
30 <meta name="distribution" content="global">
31 <meta name="Generator" content="makeinfo">
32 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
33 <link href="index.html#Top" rel="start" title="Top">
34 <link href="Concept-Index.html#Concept-Index" rel="index" title="Concept Index">
35 <link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
36 <link href="More-DFTs-of-Real-Data.html#More-DFTs-of-Real-Data" rel="up" title="More DFTs of Real Data">
37 <link href="Real-even_002fodd-DFTs-_0028cosine_002fsine-transforms_0029.html#Real-even_002fodd-DFTs-_0028cosine_002fsine-transforms_0029" rel="next" title="Real even/odd DFTs (cosine/sine transforms)">
38 <link href="More-DFTs-of-Real-Data.html#More-DFTs-of-Real-Data" rel="prev" title="More DFTs of Real Data">
39 <style type="text/css">
40 <!--
41 a.summary-letter {text-decoration: none}
42 blockquote.smallquotation {font-size: smaller}
43 div.display {margin-left: 3.2em}
44 div.example {margin-left: 3.2em}
45 div.indentedblock {margin-left: 3.2em}
46 div.lisp {margin-left: 3.2em}
47 div.smalldisplay {margin-left: 3.2em}
48 div.smallexample {margin-left: 3.2em}
49 div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
50 div.smalllisp {margin-left: 3.2em}
51 kbd {font-style:oblique}
52 pre.display {font-family: inherit}
53 pre.format {font-family: inherit}
54 pre.menu-comment {font-family: serif}
55 pre.menu-preformatted {font-family: serif}
56 pre.smalldisplay {font-family: inherit; font-size: smaller}
57 pre.smallexample {font-size: smaller}
58 pre.smallformat {font-family: inherit; font-size: smaller}
59 pre.smalllisp {font-size: smaller}
60 span.nocodebreak {white-space:nowrap}
61 span.nolinebreak {white-space:nowrap}
62 span.roman {font-family:serif; font-weight:normal}
63 span.sansserif {font-family:sans-serif; font-weight:normal}
64 ul.no-bullet {list-style: none}
65 -->
66 </style>
67
68
69 </head>
70
71 <body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
72 <a name="The-Halfcomplex_002dformat-DFT"></a>
73 <div class="header">
74 <p>
75 Next: <a href="Real-even_002fodd-DFTs-_0028cosine_002fsine-transforms_0029.html#Real-even_002fodd-DFTs-_0028cosine_002fsine-transforms_0029" accesskey="n" rel="next">Real even/odd DFTs (cosine/sine transforms)</a>, Previous: <a href="More-DFTs-of-Real-Data.html#More-DFTs-of-Real-Data" accesskey="p" rel="prev">More DFTs of Real Data</a>, Up: <a href="More-DFTs-of-Real-Data.html#More-DFTs-of-Real-Data" accesskey="u" rel="up">More DFTs of Real Data</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-Index.html#Concept-Index" title="Index" rel="index">Index</a>]</p>
76 </div>
77 <hr>
78 <a name="The-Halfcomplex_002dformat-DFT-1"></a>
79 <h4 class="subsection">2.5.1 The Halfcomplex-format DFT</h4>
80
81 <p>An r2r kind of <code>FFTW_R2HC</code> (<em>r2hc</em>) corresponds to an r2c DFT
82 <a name="index-FFTW_005fR2HC"></a>
83 <a name="index-r2c-1"></a>
84 <a name="index-r2hc"></a>
85 (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;
86 format output, and may sometimes be faster and/or more convenient than
87 the latter.
88 <a name="index-halfcomplex-format-1"></a>
89 The inverse <em>hc2r</em> transform is of kind <code>FFTW_HC2R</code>.
90 <a name="index-FFTW_005fHC2R"></a>
91 <a name="index-hc2r"></a>
92 This consists of the non-redundant half of the complex output for a 1d
93 real-input DFT of size <code>n</code>, stored as a sequence of <code>n</code> real
94 numbers (<code>double</code>) in the format:
95 </p>
96 <p align=center>
97 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>
98 </p>
99 <p>Here,
100 r<sub>k</sub>is the real part of the <em>k</em>th output, and
101 i<sub>k</sub>is the imaginary part. (Division by 2 is rounded down.) For a
102 halfcomplex array <code>hc[n]</code>, the <em>k</em>th component thus has its
103 real part in <code>hc[k]</code> and its imaginary part in <code>hc[n-k]</code>, with
104 the exception of <code>k</code> <code>==</code> <code>0</code> or <code>n/2</code> (the latter
105 only if <code>n</code> is even)&mdash;in these two cases, the imaginary part is
106 zero due to symmetries of the real-input DFT, and is not stored.
107 Thus, the r2hc transform of <code>n</code> real values is a halfcomplex array of
108 length <code>n</code>, and vice versa for hc2r.
109 <a name="index-normalization-2"></a>
110 </p>
111
112 <p>Aside from the differing format, the output of
113 <code>FFTW_R2HC</code>/<code>FFTW_HC2R</code> is otherwise exactly the same as for
114 the corresponding 1d r2c/c2r transform
115 (i.e. <code>FFTW_FORWARD</code>/<code>FFTW_BACKWARD</code> transforms, respectively).
116 Recall that these transforms are unnormalized, so r2hc followed by hc2r
117 will result in the original data multiplied by <code>n</code>. Furthermore,
118 like the c2r transform, an out-of-place hc2r transform will
119 <em>destroy its input</em> array.
120 </p>
121 <p>Although these halfcomplex transforms can be used with the
122 multi-dimensional r2r interface, the interpretation of such a separable
123 product of transforms along each dimension is problematic. For example,
124 consider a two-dimensional <code>n0</code> by <code>n1</code>, r2hc by r2hc
125 transform planned by <code>fftw_plan_r2r_2d(n0, n1, in, out, FFTW_R2HC,
126 FFTW_R2HC, FFTW_MEASURE)</code>. Conceptually, FFTW first transforms the rows
127 (of size <code>n1</code>) to produce halfcomplex rows, and then transforms the
128 columns (of size <code>n0</code>). Half of these column transforms, however,
129 are of imaginary parts, and should therefore be multiplied by <em>i</em>
130 and combined with the r2hc transforms of the real columns to produce the
131 2d DFT amplitudes; FFTW&rsquo;s r2r transform does <em>not</em> perform this
132 combination for you. Thus, if a multi-dimensional real-input/output DFT
133 is required, we recommend using the ordinary r2c/c2r
134 interface (see <a href="Multi_002dDimensional-DFTs-of-Real-Data.html#Multi_002dDimensional-DFTs-of-Real-Data">Multi-Dimensional DFTs of Real Data</a>).
135 </p>
136 <hr>
137 <div class="header">
138 <p>
139 Next: <a href="Real-even_002fodd-DFTs-_0028cosine_002fsine-transforms_0029.html#Real-even_002fodd-DFTs-_0028cosine_002fsine-transforms_0029" accesskey="n" rel="next">Real even/odd DFTs (cosine/sine transforms)</a>, Previous: <a href="More-DFTs-of-Real-Data.html#More-DFTs-of-Real-Data" accesskey="p" rel="prev">More DFTs of Real Data</a>, Up: <a href="More-DFTs-of-Real-Data.html#More-DFTs-of-Real-Data" accesskey="u" rel="up">More DFTs of Real Data</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-Index.html#Concept-Index" title="Index" rel="index">Index</a>]</p>
140 </div>
141
142
143
144 </body>
145 </html>