cfce55cd253cdf8437909d6c79d4c49605ba9b2b
[scilab.git] / scilab / modules / signal_processing / help / en_US / transforms / fftshift.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2 <refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="fftshift">
3     <refnamediv>
4         <refname>fftshift</refname>
5         <refpurpose>rearranges the fft output, moving the zero frequency to the center of the spectrum</refpurpose>
6     </refnamediv>
7     <refsynopsisdiv>
8         <title>Syntax</title>
9         <synopsis>
10             y = fftshift(x)
11             y = fftshift(x, along)
12         </synopsis>
13     </refsynopsisdiv>
14     <refsection>
15         <title>Arguments</title>
16         <variablelist>
17             <varlistentry>
18                 <term>x, y</term>
19                 <listitem>
20                     <para>vectors, matrices or hypermatrices, of same sizes.</para>
21                 </listitem>
22             </varlistentry>
23             <varlistentry>
24                 <term>along</term>
25                 <listitem>
26                     <para>
27                         1 | "r" | 2 | "c" | 0&lt;along&lt;=ndims(x): dimension along which
28                         halves are switched.
29                     </para>
30                 </listitem>
31             </varlistentry>
32         </variablelist>
33     </refsection>
34     <refsection>
35         <title>Description</title>
36         <para>
37             If <literal>x</literal> results of an fft computation, <literal>y=fftshift(x)</literal>
38             or <literal>y=fftshift(x,"all")</literal> moves the zero frequency component to the
39             center of the spectrum, which is sometimes a more convenient form.
40         </para>
41         <screen><![CDATA[
42 x = [x1  x2 ]    gives   y = [x2  x1 ]  // vector
43
44     [x11 x12]                [x22 x21]
45 x = |       |    gives   y = |       |  // matrix
46     [x21 x22]                [x12 x11]
47 etc
48 ]]></screen>
49         <para>
50             <literal>y=fftshift(x,n)</literal> makes the swap only along the <literal>n</literal>th
51             dimension.
52         </para>
53     </refsection>
54     <refsection>
55         <title>Examples</title>
56         <programlisting role="example"><![CDATA[
57 x = [1 2 3 4 5 6 7]
58 fftshift(x)
59  ]]></programlisting>
60     <screen><![CDATA[
61 --> x = [1 2 3 4 5 6 7]
62  x  =
63    1.   2.   3.   4.   5.   6.   7.
64
65 --> fftshift(x)
66  ans  =
67    5.   6.   7.   1.   2.   3.   4.
68 ]]></screen>
69     <para/>
70         <programlisting role="example"><![CDATA[
71 x = matrix(1:36,6,6)
72 fftshift(x)
73 fftshift(x, "r")
74 fftshift(x, "c")
75  ]]></programlisting>
76     <screen><![CDATA[
77 --> x = matrix(1:36,6,6)
78  x  =
79    1.   7.    13.   19.   25.   31.
80    2.   8.    14.   20.   26.   32.
81    3.   9.    15.   21.   27.   33.
82    4.   10.   16.   22.   28.   34.
83    5.   11.   17.   23.   29.   35.
84    6.   12.   18.   24.   30.   36.
85
86 --> fftshift(x)       // Corners go to the center
87  ans  =
88    22.   28.   34.   4.   10.   16.
89    23.   29.   35.   5.   11.   17.
90    24.   30.   36.   6.   12.   18.
91    19.   25.   31.   1.   7.    13.
92    20.   26.   32.   2.   8.    14.
93    21.   27.   33.   3.   9.    15.
94
95 --> fftshift(x, "r")  // External rows become middle rows
96  ans  =
97    4.   10.   16.   22.   28.   34.
98    5.   11.   17.   23.   29.   35.
99    6.   12.   18.   24.   30.   36.
100    1.   7.    13.   19.   25.   31.
101    2.   8.    14.   20.   26.   32.
102    3.   9.    15.   21.   27.   33.
103
104 --> fftshift(x, "c")  // External columns become middle columns
105  ans  =
106    19.   25.   31.   1.   7.    13.
107    20.   26.   32.   2.   8.    14.
108    21.   27.   33.   3.   9.    15.
109    22.   28.   34.   4.   10.   16.
110    23.   29.   35.   5.   11.   17.
111    24.   30.   36.   6.   12.   18.
112 ]]></screen>
113     <para/>
114
115  <programlisting role="example"><![CDATA[
116 // Make a signal
117 t = 0:0.1:1000;
118 x = 3*sin(t)+8*sin(3*t)+0.5*sin(5*t)+3*rand(t);
119 // Compute the fft
120 y = fft(x,-1);
121
122 // Display
123 clf();
124 subplot(2,1,1); plot2d(abs(y))
125 subplot(2,1,2); plot2d(fftshift(abs(y)))
126  ]]></programlisting>
127         <scilab:image>
128             t=0:0.1:1000;
129             x=3*sin(t)+8*sin(3*t)+0.5*sin(5*t)+3*rand(t);
130             y=fft(x,-1);
131             subplot(2,1,1);plot2d(abs(y))
132             subplot(2,1,2);plot2d(fftshift(abs(y)))
133         </scilab:image>
134         <programlisting role="example"><![CDATA[
135 // Make a 2D image
136 t = 0:0.1:30;
137 x = 3*sin(t')*cos(2*t)+8*sin(3*t')*sin(5*t)+..
138   0.5*sin(5*t')*sin(5*t)+3*rand(t')*rand(t);
139 // Compute the fft
140 y = fft(x,-1);
141
142 // Display
143 clf();
144 gcf().color_map = hotcolormap(256);
145 subplot(2,1,1); Matplot(abs(y))
146 subplot(2,1,2); Matplot(fftshift(abs(y)))
147  ]]></programlisting>
148         <scilab:image>
149             t=0:0.1:30;
150             x=3*sin(t')*cos(2*t)+8*sin(3*t')*sin(5*t)+..
151             0.5*sin(5*t')*sin(5*t)+3*rand(t')*rand(t);
152             y=fft(x,-1);
153             gcf().color_map = hotcolormap(256);
154             subplot(2,1,1);
155             Matplot(abs(y))
156             subplot(2,1,2);
157             Matplot(fftshift(abs(y)))
158         </scilab:image>
159     </refsection>
160     <refsection role="see also">
161         <title>See also</title>
162         <simplelist type="inline">
163             <member>
164                 <link linkend="fft">fft</link>
165             </member>
166             <member>
167                 <link linkend="ifftshift">ifftshift</link>
168             </member>
169             <member>
170                 <link linkend="flipdim">flipdim</link>
171             </member>
172         </simplelist>
173     </refsection>
174 </refentry>