04b6d7986ff2a63e7b94276c42ab1026bb222f59
[scilab.git] / scilab / modules / elementary_functions / help / pt_BR / setoperations / unique.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
5  * Copyright (C) 2012 - 2016 - Scilab Enterprises
6  * Copyright (C) 2017 - 2019 - Samuel GOUGEON
7  *
8  * This file is hereby licensed under the terms of the GNU GPL v2.0,
9  * pursuant to article 5.3.4 of the CeCILL v.2.1.
10  * This file was originally licensed under the terms of the CeCILL v2.1,
11  * and continues to be available under such terms.
12  * For more information, see the COPYING file which you should have received
13  * along with this program.
14  *
15  -->
16 <refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"
17           xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns4="http://www.w3.org/1999/xhtml"
18           xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook"
19           xmlns:scilab="http://www.scilab.org" xml:id="unique" xml:lang="pt">
20     <refnamediv>
21         <refname>unique</refname>
22         <refpurpose>remover todos os componentes duplicados de um vetor ou uma matriz
23         </refpurpose>
24     </refnamediv>
25     <refsynopsisdiv>
26         <title>Seqüência de Chamamento</title>
27         <synopsis>
28             [N, km, kn, nb] = unique(M)
29             [N, km, kn, nb] = unique(M, orient)
30             [N, km, kn, nb] = unique(.., "keepOrder")
31             [N, km, kn, nb] = unique(.., "uniqueNan")
32         </synopsis>
33     </refsynopsisdiv>
34     <refsection role="parameters">
35         <title>Parâmetros</title>
36         <variablelist>
37             <varlistentry>
38                 <term>M</term>
39                 <listitem>
40                     <para>vetor ou matriz de números ou strings </para>
41                 </listitem>
42             </varlistentry>
43             <varlistentry>
44                 <term>orient</term>
45                 <listitem>
46                     <para>flag com valores possíveis : 1 ou "r", 2 ou "c".
47                         It can't be used if <varname>M</varname> is an hypermatrix.
48                     </para>
49                 </listitem>
50             </varlistentry>
51             <varlistentry>
52                 <term>N</term>
53                 <listitem>
54                     <para>
55                       <itemizedlist>
56                         <listitem>
57                             <para>
58                               If <varname>orient</varname> is not used: Vector of extracted
59                               <varname>M</varname> components sorted in ascending order.
60                             If <varname>M</varname> is a row vector, <varname>N</varname> is also
61                             a row vector. In all other <varname>M</varname> cases,
62                             <varname>N</varname> is a matrix or a column vector.
63                             </para>
64                         </listitem>
65                         <listitem>
66                           If <varname>orient</varname> is used: Matrix of extracted
67                           <varname>M</varname> rows or columns, sorted in lexicographic ascending order.
68                         </listitem>
69                       </itemizedlist>
70                     </para>
71                 </listitem>
72             </varlistentry>
73             <varlistentry>
74                 <term>k</term>
75                 <listitem>
76                     <para>
77                       Vector of indices of first encountered occurences, such that
78                       <literal>N(i) = M(k(i))</literal> or <literal>N(i,:) = M(k(i),:)</literal>
79                       or <literal>N(:,i) = M(:,k(i))</literal>.
80                     </para>
81                     <para>
82                         <varname>k</varname> is a row if <varname>M</varname> is a row or if
83                         <literal>orient="c"</literal> is used. Otherwise it's a column.
84                     </para>
85                 </listitem>
86             </varlistentry>
87             <varlistentry>
88                 <term>kn</term>
89                 <listitem>
90                     Not yet implemented.
91                     Vector of indices of first encountered occurrences, such that
92                     <literal>M(i) = N(kn(i))</literal> or <literal>M(i,:) = N(kn(i),:)</literal>
93                     or <literal>M(:,i) = N(:,kn(i))</literal>.
94                     <para/>
95                 </listitem>
96             </varlistentry>
97             <varlistentry>
98                 <term>nb</term>
99                 <listitem>
100                     <para>
101                       Vector of integers > 0, with the same <varname>k</varname> shape:
102                       Numbers of occurences in <varname>M</varname> of respective unduplicated
103                       entities (components, rows, columns) returned in <varname>N</varname>.
104                     </para>
105                 </listitem>
106             </varlistentry>
107         </variablelist>
108     </refsection>
109     <refsection role="description">
110         <title>Descrição</title>
111         <para>
112             <literal>unique(M)</literal> retorna um vetor que retém as entradas
113             únicas de <literal>M</literal> em ordem ascendente.
114         </para>
115         <para>
116             <literal>unique(M,"r")</literal> ou
117             <literal>unique(M,1)</literal>retorna as linhas únicas de
118             <literal>M</literal> em ordem lexicográfica ascendente.
119         </para>
120         <para>
121             <literal>unique(M,"c")</literal> ou
122             <literal>unique(M,2)</literal>retorna as linhas únicas de
123             <literal>M</literal> em ordem lexicográfica ascendente.
124         </para>
125         <para>
126             <literal>unique(M,.. "keepOrder")</literal> returns <varname>M</varname> unduplicated
127             entries in their original order in <varname>M</varname>.
128             <literal>"keepOrder"</literal> is case-insensitive.
129         </para>
130         <para>
131             <literal>unique(M,.. "uniqueNan")</literal> considers all Nan values as the same one,
132             and unduplicates them. By default, any Nan is different
133             from any other Nan, including itself: <literal>%nan&lt;>%nan</literal> is true, unless
134             <literal>"uniqueNan"</literal> is used. Specifying
135             <literal>"uniqueNan"</literal> is case-insensitive.
136         </para>
137     </refsection>
138     <refsection role="description">
139         <title>Exemplos</title>
140         <para>With some numbers:</para>
141         <programlisting role="example"><![CDATA[
142 M = int8([2  0  2  2  1  1  1  2  1  1  0  1  1  0  1  1
143           0  1  2  0  1  2  2  0  1  1  2  0  1  0  0  0
144           ])
145 [u, km] = unique(M)
146 [uc, kmc] = unique(M, "c")
147  ]]></programlisting>
148     <screen><![CDATA[
149 --> M
150  M =
151   2  0  2  2  1  1  1  2  1  1  0  1  1  0  1  1
152   0  1  2  0  1  2  2  0  1  1  2  0  1  0  0  0
153
154 --> [u, km] = unique(M)
155  u  =
156   0
157   1
158   2
159
160  km  =
161    2.
162    4.
163    1.
164
165 --> [uc, kmc] = unique(M, "c")
166  uc  =
167   0  0  0  1  1  1  2  2
168   0  1  2  0  1  2  0  2
169
170  kmc  =
171    14.   2.   11.   12.   5.   6.   1.   3.
172 ]]></screen>
173         <para>With complex numbers:</para>
174         <programlisting role="example"><![CDATA[
175 i = %i;
176 c = [1+i, 1-i, -i, i, -i, 1+i]
177 [u, k] = unique(c)
178 [uc, kc] = unique(c, "c")
179  ]]></programlisting>
180     <screen><![CDATA[
181 --> c = [1+i, 1-i, -i, i, -i, 1+i]
182  c  =
183    1. + i     1. - i  -i    i   -i    1. + i
184
185 --> [u, k] = unique(c)
186  u  =
187   -i    i    1. - i   1. + i
188
189  k  =
190    3.   4.   2.   1.
191 ]]></screen>
192
193     <para>With some texts:</para>
194         <programlisting role="example"><![CDATA[
195 t = ["BA" "BB" "AB" "BA" "AB" "BA" "AB" "AB" "BA" "AA" "AB" "BA" "BA" "BA" "AA"
196      "AA" "AB" "AA" "AA" "BB" "BB" "BB" "BA" "AB" "AB" "BB" "BB" "AB" "AB" "AA"
197     ]
198 u = unique(t)'
199 [u, kt, ku, nb] = unique(t(1,:))
200 [u, kt] = unique(t(1,:), "keepOrder")  // Keeping the original order of row#1 elements
201 [uc, ktc, kuc, nb] = unique(t, "c")
202 [uc, ktc, kuc, nb] = unique(t, "c", "keepOrder")  // Keeping the original order of columns
203  ]]></programlisting>
204     <screen><![CDATA[
205 --> t = ["BA" "BB" "AB" "BA" "AB" "BA" "AB" "AB" "BA" "AA" "AB" "BA" "BA" "BA" "AA"
206   >      "AA" "AB" "AA" "AA" "BB" "BB" "BB" "BA" "AB" "AB" "BB" "BB" "AB" "AB" "AA"
207   >     ]
208  t  =
209 !BA  BB  AB  BA  AB  BA  AB  AB  BA  AA  AB  BA  BA  BA  AA  !
210 !AA  AB  AA  AA  BB  BB  BB  BA  AB  AB  BB  BB  AB  AB  AA  !
211
212 --> u = unique(t)'
213  u  =
214 !AA  AB  BA  BB  !
215
216 --> [u, kt, ku, nb] = unique(t(1,:))
217  u  =
218 !AA  AB  BA  BB  !
219
220  kt  =
221    10.   3.   1.   2.
222
223  nb  =
224    2.   5.   7.   1.
225
226 --> [u, kt] = unique(t(1,:), "keepOrder")  // Keeping the original order
227  u  =
228 !BA  BB  AB  AA  !
229
230  kt  =
231    1.   2.   3.   10.
232
233 --> [uc, ktc, kuc, nb] = unique(t, "c")
234  uc  =
235 !AA  AA  AB  AB  AB  BA  BA  BA  BB  !             Sorted columns
236 !AA  AB  AA  BA  BB  AA  AB  BB  AB  !
237
238  ktc  =
239    15.   10.   3.   8.   5.   1.   9.   6.   2.
240
241  nb  =
242    1.   1.   1.   1.   3.   2.   3.   2.   1.
243
244 --> [uc, ktc, kuc, nb] = unique(t, "c", "keepOrder")  // Keeping the original order
245  uc  =
246 !BA  BB  AB  AB  BA  AB  BA  AA  AA  !
247 !AA  AB  AA  BB  BB  BA  AB  AB  AA  !
248
249  ktc  =
250    1.   2.   3.   5.   6.   8.   9.   10.   15.
251
252  nb  =
253    2.   1.   1.   3.   2.   1.   3.   1.   1.
254 ]]></screen>
255         <para/>
256         <para>With Nan (and Inf) values. "uniqueNan" option:</para>
257         <programlisting role="example"><![CDATA[
258 M = [2  2  %nan  1     2  0     1  %nan  0    %nan
259      1  0  1     %nan  0  %inf  0  1     %inf 1
260     ];
261 [v, km, kv, n] = unique(M); v',n'
262 [v, km, kv, n] = unique(M, "uniqueNan"); v',n'
263 unique(M, "c")
264 [v, kmc, kvc, n] = unique(M, "c", "uniqueNan")
265  ]]></programlisting>
266     <screen><![CDATA[
267 --> M
268  M  =
269    2.   2.   Nan   1.    2.   0.    1.   Nan   0.    Nan
270    1.   0.   1.    Nan   0.   Inf   0.   1.    Inf   1.
271
272 --> [v, km, kv, n] = unique(M); v',n'
273  ans  =
274    0.   1.   2.   Inf   Nan   Nan   Nan   Nan
275
276  ans  =
277    5.   6.   3.   2.   1.   1.   1.   1.
278
279 --> [v, km, kv, n] = unique(M, "uniqueNan"); v',n'
280  ans  =
281    0.   1.   2.   Inf   Nan
282
283  ans  =
284    5.   6.   3.   2.   4.
285
286 --> unique(M, "c")
287  ans  =
288    0.    1.   1.    2.   2.   Nan   Nan   Nan
289    Inf   0.   Nan   0.   1.   1.    1.    1.
290
291 --> [v, kmc, kvc, n] = unique(M, "c", "uniqueNan")
292  v  =
293    0.    1.   1.    2.   2.   Nan
294    Inf   0.   Nan   0.   1.   1.
295
296  kmc  =
297    6.   7.   4.   2.   1.   3.
298
299  n  =
300    2.   1.   1.   2.   1.   3.
301 ]]></screen>
302     </refsection>
303     <refsection role="see also">
304         <title>Ver Também</title>
305         <simplelist type="inline">
306             <member>
307                 <link linkend="members">members</link>
308             </member>
309             <member>
310                 <link linkend="gsort">gsort</link>
311             </member>
312             <member>
313                 <link linkend="vectorfind">vectorfind</link>
314             </member>
315             <member>
316                 <link linkend="grep">grep</link>
317             </member>
318             <member>
319                 <link linkend="union">union</link>
320             </member>
321             <member>
322                 <link linkend="intersect">intersect</link>
323             </member>
324         </simplelist>
325     </refsection>
326     <refsection role="history">
327         <title>Histórico</title>
328         <revhistory>
329             <revision>
330                 <revnumber>6.0.2</revnumber>
331                 <revdescription>
332                     unique() can now be used to unduplicate complex numbers.
333                 </revdescription>
334             </revision>
335             <revision>
336                 <revnumber>6.1.0</revnumber>
337                 <revdescription>
338                     <itemizedlist>
339                         <listitem>
340                             "keepOrder" and "uniqueNan" options introduced.
341                         </listitem>
342                         <listitem>
343                             Fourth output argument <literal>nb</literal> introduced.
344                         </listitem>
345                     </itemizedlist>
346                 </revdescription>
347             </revision>
348         </revhistory>
349     </refsection>
350 </refentry>