comparison src/fftw-3.3.3/doc/html/More-DFTs-of-Real-Data.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>More DFTs of Real Data - 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="Tutorial.html#Tutorial" title="Tutorial">
9 <link rel="prev" href="Multi_002dDimensional-DFTs-of-Real-Data.html#Multi_002dDimensional-DFTs-of-Real-Data" title="Multi-Dimensional DFTs of Real Data">
10 <link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
11 <!--
12 This manual is for FFTW
13 (version 3.3.3, 25 November 2012).
14
15 Copyright (C) 2003 Matteo Frigo.
16
17 Copyright (C) 2003 Massachusetts Institute of Technology.
18
19 Permission is granted to make and distribute verbatim copies of
20 this manual provided the copyright notice and this permission
21 notice are preserved on all copies.
22
23 Permission is granted to copy and distribute modified versions of
24 this manual under the conditions for verbatim copying, provided
25 that the entire resulting derived work is distributed under the
26 terms of a permission notice identical to this one.
27
28 Permission is granted to copy and distribute translations of this
29 manual into another language, under the above conditions for
30 modified versions, except that this permission notice may be
31 stated in a translation approved by the Free Software Foundation.
32 -->
33 <meta http-equiv="Content-Style-Type" content="text/css">
34 <style type="text/css"><!--
35 pre.display { font-family:inherit }
36 pre.format { font-family:inherit }
37 pre.smalldisplay { font-family:inherit; font-size:smaller }
38 pre.smallformat { font-family:inherit; font-size:smaller }
39 pre.smallexample { font-size:smaller }
40 pre.smalllisp { font-size:smaller }
41 span.sc { font-variant:small-caps }
42 span.roman { font-family:serif; font-weight:normal; }
43 span.sansserif { font-family:sans-serif; font-weight:normal; }
44 --></style>
45 </head>
46 <body>
47 <div class="node">
48 <a name="More-DFTs-of-Real-Data"></a>
49 <p>
50 Previous:&nbsp;<a rel="previous" accesskey="p" href="Multi_002dDimensional-DFTs-of-Real-Data.html#Multi_002dDimensional-DFTs-of-Real-Data">Multi-Dimensional DFTs of Real Data</a>,
51 Up:&nbsp;<a rel="up" accesskey="u" href="Tutorial.html#Tutorial">Tutorial</a>
52 <hr>
53 </div>
54
55 <h3 class="section">2.5 More DFTs of Real Data</h3>
56
57 <ul class="menu">
58 <li><a accesskey="1" href="The-Halfcomplex_002dformat-DFT.html#The-Halfcomplex_002dformat-DFT">The Halfcomplex-format DFT</a>
59 <li><a accesskey="2" 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>
60 <li><a accesskey="3" href="The-Discrete-Hartley-Transform.html#The-Discrete-Hartley-Transform">The Discrete Hartley Transform</a>
61 </ul>
62
63 <p>FFTW supports several other transform types via a unified <dfn>r2r</dfn>
64 (real-to-real) interface,
65 <a name="index-r2r-65"></a>so called because it takes a real (<code>double</code>) array and outputs a
66 real array of the same size. These r2r transforms currently fall into
67 three categories: DFTs of real input and complex-Hermitian output in
68 halfcomplex format, DFTs of real input with even/odd symmetry
69 (a.k.a. discrete cosine/sine transforms, DCTs/DSTs), and discrete
70 Hartley transforms (DHTs), all described in more detail by the
71 following sections.
72
73 <p>The r2r transforms follow the by now familiar interface of creating an
74 <code>fftw_plan</code>, executing it with <code>fftw_execute(plan)</code>, and
75 destroying it with <code>fftw_destroy_plan(plan)</code>. Furthermore, all
76 r2r transforms share the same planner interface:
77
78 <pre class="example"> fftw_plan fftw_plan_r2r_1d(int n, double *in, double *out,
79 fftw_r2r_kind kind, unsigned flags);
80 fftw_plan fftw_plan_r2r_2d(int n0, int n1, double *in, double *out,
81 fftw_r2r_kind kind0, fftw_r2r_kind kind1,
82 unsigned flags);
83 fftw_plan fftw_plan_r2r_3d(int n0, int n1, int n2,
84 double *in, double *out,
85 fftw_r2r_kind kind0,
86 fftw_r2r_kind kind1,
87 fftw_r2r_kind kind2,
88 unsigned flags);
89 fftw_plan fftw_plan_r2r(int rank, const int *n, double *in, double *out,
90 const fftw_r2r_kind *kind, unsigned flags);
91 </pre>
92 <p><a name="index-fftw_005fplan_005fr2r_005f1d-66"></a><a name="index-fftw_005fplan_005fr2r_005f2d-67"></a><a name="index-fftw_005fplan_005fr2r_005f3d-68"></a><a name="index-fftw_005fplan_005fr2r-69"></a>
93 Just as for the complex DFT, these plan 1d/2d/3d/multi-dimensional
94 transforms for contiguous arrays in row-major order, transforming (real)
95 input to output of the same size, where <code>n</code> specifies the
96 <em>physical</em> dimensions of the arrays. All positive <code>n</code> are
97 supported (with the exception of <code>n=1</code> for the <code>FFTW_REDFT00</code>
98 kind, noted in the real-even subsection below); products of small
99 factors are most efficient (factorizing <code>n-1</code> and <code>n+1</code> for
100 <code>FFTW_REDFT00</code> and <code>FFTW_RODFT00</code> kinds, described below), but
101 an <i>O</i>(<i>n</i>&nbsp;log&nbsp;<i>n</i>) algorithm is used even for prime sizes.
102
103 <p>Each dimension has a <dfn>kind</dfn> parameter, of type
104 <code>fftw_r2r_kind</code>, specifying the kind of r2r transform to be used
105 for that dimension.
106 <a name="index-kind-_0028r2r_0029-70"></a><a name="index-fftw_005fr2r_005fkind-71"></a>(In the case of <code>fftw_plan_r2r</code>, this is an array <code>kind[rank]</code>
107 where <code>kind[i]</code> is the transform kind for the dimension
108 <code>n[i]</code>.) The kind can be one of a set of predefined constants,
109 defined in the following subsections.
110
111 <p>In other words, FFTW computes the separable product of the specified
112 r2r transforms over each dimension, which can be used e.g. for partial
113 differential equations with mixed boundary conditions. (For some r2r
114 kinds, notably the halfcomplex DFT and the DHT, such a separable
115 product is somewhat problematic in more than one dimension, however,
116 as is described below.)
117
118 <p>In the current version of FFTW, all r2r transforms except for the
119 halfcomplex type are computed via pre- or post-processing of
120 halfcomplex transforms, and they are therefore not as fast as they
121 could be. Since most other general DCT/DST codes employ a similar
122 algorithm, however, FFTW's implementation should provide at least
123 competitive performance.
124
125 <!-- =========> -->
126 </body></html>
127