Elementary_functions: slight fix for flipdim
[scilab.git] / scilab / modules / elementary_functions / help / en_US / matrixmanipulation / flipdim.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!--
3  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
4  * Copyright (C) 2008 - INRIA - Farid BELAHCENE
5  * Copyright (C) 2013 - Samuel GOUGEON: restriction to decimal numbers removed. Examples added for booleans, integer-encoded numbers, text, polynomials, rationals
6  *
7  * This file must be used under the terms of the CeCILL.
8  * This source file is licensed as described in the file COPYING, which
9  * you should have received as part of this distribution.  The terms
10  * are also available at
11  * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
12  *
13  -->
14 <refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="flipdim" xml:lang="en">
15     <refnamediv>
16         <refname>flipdim</refname>
17         <refpurpose>flip x block components along a given dimension</refpurpose>
18     </refnamediv>
19     <refsynopsisdiv>
20         <title>Calling Sequence</title>
21         <synopsis>y = flipdim(x, dim [,sb])</synopsis>
22     </refsynopsisdiv>
23     <refsection>
24         <title>Arguments</title>
25         <variablelist>
26             <varlistentry>
27                 <term>x, y</term>
28                 <listitem>
29                     <para>scalars, vectors, matrices, or hypermatrices of any type, of same sizes</para>
30                 </listitem>
31             </varlistentry>
32             <varlistentry>
33                 <term>dim</term>
34                 <listitem>
35                     <para>a positive integer, the dimension number along which the flipping should occur</para>
36                 </listitem>
37             </varlistentry>
38             <varlistentry>
39                 <term>sb</term>
40                 <listitem>
41                     <para>a positive integer, the size of the blocks to permute</para>
42                 </listitem>
43             </varlistentry>
44         </variablelist>
45     </refsection>
46     <refsection>
47         <title>Description</title>
48         <para>
49             Given <literal>x</literal>, a scalar/vector/matrix/hypermatrix of any type and
50             two positive integers <literal>dim</literal> and <literal>sb</literal>,
51             this function flips the x components by blocks of size <literal>sb</literal>
52             along the dimension number <literal>dim</literal> of <literal>x</literal>
53             (<literal>x</literal> and <literal>y</literal> have the same size).
54         </para>
55         <para>
56             The optional parameter <literal>sb</literal> (for Size Block) allows flipping
57             <literal>x</literal> by blocks of size <literal>sb*size(x,2)</literal>
58             (<literal>dim=1</literal>) or <literal>size(x,1)*sb</literal> (<literal>dim=2</literal>).
59         </para>
60     </refsection>
61     <refsection>
62         <title>Examples</title>
63         <programlisting role="example"><![CDATA[
64 // Example 1: flip x components along the first dimension
65 x = [1 2 3 4; 5 6 7 8]
66 dim = 1
67 y = flipdim(x, dim)
68
69 // Example 2: flip x components along the second dimension
70 dim = 2
71 y = flipdim(x, dim)
72
73 // Example 3: flip x components along the third dimension
74 x = matrix(1:24, [3 2 4])
75 dim = 3
76 y = flipdim(x, dim)
77
78 // Example 4: the first example with complex
79 x = [1+%i 2*%i 3 4; 5 6-%i 7 8*%pi*%i]
80 dim = 1
81 y = flipdim(x, dim)
82
83 // Integer-encoded numbers:
84 x = int16(grand(4, 3, 2, "uin", -9, 9))
85 y = flipdim(x, 1)
86
87 // Booleans:
88 x = (grand(3, 4, "uin", -9, 9) > 0)
89 y = flipdim(x, 2)
90
91 // Texts:
92 x = matrix(strsplit("a":"x", 1:23), 4, 6);
93 x = x+x
94 flipdim(x, 2)
95
96 // Polynomials:
97 x = inv_coeff(grand(3, 9, "uin", 0, 3), 2)
98 flipdim(x, 1)
99
100 // Rationals:
101 n = inv_coeff(grand(3, 9, "uin", 0, 3), 2);
102 d = inv_coeff(grand(3, 9, "uin", 0, 3), 2);
103 r = n./d
104 flipdim(r, 2)
105  ]]></programlisting>
106         <para>
107             Examples using <literal>sb</literal>:
108         </para>
109         <programlisting role="example"><![CDATA[
110 X = [0 1 2 3 4 5 6 7 8 9 10 11];
111 flipdim(X, 2, 2) // => [10 11   8 9   6 7   4 5   2 3   0 1] // Block size = 2.
112 flipdim(X, 2, 3) // => [9 10 11   6 7 8   3 4 5   0 1 2]
113 flipdim(X, 2, 4) // => [8 9 10 11   4 5 6 7   0 1 2 3]
114 flipdim(X, 2, 6) // => [6 7 8 9 10 11   0 1 2 3 4 5]
115
116 // Error if sb does not divide the targeted dimension of x.
117 y = flipdim(x, 2, 5); // size(X) = [1 12] and sb=5 does not divide 12.
118  ]]></programlisting>
119     </refsection>
120     <refsection>
121         <title>History</title>
122         <revhistory>
123             <revision>
124                 <revnumber>5.5.0</revnumber>
125                 <revremark>
126                     Extension from decimals to any type: booleans, integers, strings, polynomials and rationals.
127                     New input argument <literal>sb</literal> to flip <literal>x</literal> blockwise.
128                 </revremark>
129             </revision>
130         </revhistory>
131     </refsection>
132 </refentry>