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