4a5ab3fc30a4105a32b08615d369b962dc94b580
[scilab.git] / scilab / modules / elementary_functions / help / fr_FR / 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:ns5="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="fr">
20     <refnamediv>
21         <refname>unique</refname>
22         <refpurpose>extrait (et trie) les éléments distincts d'un vecteur, matrice, hypermatrice
23         </refpurpose>
24     </refnamediv>
25     <refsynopsisdiv>
26         <title>Séquence d'appel</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>Paramètres</title>
36         <variablelist>
37             <varlistentry>
38                 <term>M</term>
39                 <listitem>
40                     <para>
41                         vecteur, matrice, ou hypermatrice de nombres ou de textes.
42                     </para>
43                 </listitem>
44             </varlistentry>
45             <varlistentry>
46                 <term>orient</term>
47                 <listitem>
48                     <para>
49                         1 ou "r", 2 ou "c". Ne peut pas être utilisé si <varname>M</varname> est
50                         une hypermatrice.
51                     </para>
52                 </listitem>
53             </varlistentry>
54             <varlistentry>
55                 <term>N</term>
56                 <listitem>
57                     <para>
58                       <itemizedlist>
59                         <listitem>
60                             <para>
61                                 Sans <varname>orient</varname>: vecteur d'éléments de
62                                 <varname>M</varname> triés par ordre croissant.
63                                 Si <varname>M</varname> est un vecteur ligne, <varname>N</varname>
64                                 aussi. Dans tous les autres cas, <varname>N</varname> est une
65                                 matrice ou en colonne.
66                             </para>
67                         </listitem>
68                         <listitem>
69                           Avec <varname>orient</varname>: Matrice de lignes ou de colonnes extraites
70                           de <varname>M</varname>, triées par ordre lexicographique croissant.
71                         </listitem>
72                       </itemizedlist>
73                     </para>
74                 </listitem>
75             </varlistentry>
76             <varlistentry>
77                 <term>km</term>
78                 <listitem>
79                     <para>
80                       Indices des éléments, lignes ou colonnes extraits, tels que
81                       <literal>N(i) = M(km(i))</literal> ou <literal>N(i,:) = M(km(i),:)</literal>
82                       ou <literal>N(:,i) = M(:,km(i))</literal>.
83                     </para>
84                     <para>
85                         <varname>km</varname> est un vecteur ligne si <varname>M</varname>
86                         l'est aussi ou si <literal>orient="c"</literal> est utilisé.
87                         Sinon <varname>km</varname> est en colonne.
88                     </para>
89                 </listitem>
90             </varlistentry>
91             <varlistentry>
92                 <term>kn</term>
93                 <listitem>
94                     Not yet implemented.
95                     Vector of indices of first encountered occurrences, such that
96                     <literal>M(i) = N(kn(i))</literal> or <literal>M(i,:) = N(kn(i),:)</literal>
97                     or <literal>M(:,i) = N(:,kn(i))</literal>.
98                     <para/>
99                 </listitem>
100             </varlistentry>
101             <varlistentry>
102                 <term>nb</term>
103                 <listitem>
104                     <para>
105                       Vecteur d'entiers > 0, au format de <varname>km</varname> :
106                       nombres d'exemplaires dans <varname>M</varname> de chaque entité
107                       (élément, ligne, colonne) retournée dans <varname>N</varname>.
108                     </para>
109                 </listitem>
110             </varlistentry>
111         </variablelist>
112     </refsection>
113     <refsection role="description">
114         <title>Description</title>
115         <para>
116             <literal>unique(M)</literal> renvoie un vecteur contenant les
117             valeurs distinctes contenues dans les termes de <literal>M</literal>
118             classées par ordre croissant.
119         </para>
120         <para>
121             <literal>unique(M,"r")</literal> ou
122             <literal>unique(M,1)</literal>retourne les lignes uniques de
123             <literal>M</literal> triées dans l'ordre lexicographique croissant.
124         </para>
125         <para>
126             <literal>unique(M,"c")</literal> or
127             <literal>unique(M,2)</literal>retourne les colonnes uniques
128             <literal>M</literal> triées dans l'ordre lexicographique croissant.
129         </para>
130         <para>
131             <literal>unique(M,.. "keepOrder")</literal> donne le vecteur des valeurs distinctes
132             de <varname>M</varname> selon leur ordre initial d'apparition dans <varname>M</varname>
133             (au lieu d'être par défaut triées par ordre croissant). L'indicateur
134             <literal>"keepOrder"</literal> est insensible aux minuscules/majuscules.
135         </para>
136         <para>
137             <literal>unique(M,.. "uniqueNan")</literal> considère toute valeur Nan comme égale
138             à toute autre Nan, et les dédoublonne comme pour n'importe quelle autre valeur numérique.
139             Par défaut, toute valeur Nan est distincte de toute autre Nan, y compris elle-même :
140             <literal>%nan&lt;>%nan</literal> est vrai, à moins d'utiliser
141             <literal>"uniqueNan"</literal>. L'indicateur
142             <literal>"uniqueNan"</literal> est insensible aux minuscules/majuscules.
143         </para>
144     </refsection>
145     <refsection role="examples">
146         <title>Exemples</title>
147         <para>Dédoublonnement de nombres :</para>
148         <programlisting role="example"><![CDATA[
149 M = int8([2  0  2  2  1  1  1  2  1  1  0  1  1  0  1  1
150           0  1  2  0  1  2  2  0  1  1  2  0  1  0  0  0
151           ])
152 [u, km] = unique(M)
153 [uc, kmc] = unique(M, "c")
154  ]]></programlisting>
155     <screen><![CDATA[
156 --> M
157  M =
158   2  0  2  2  1  1  1  2  1  1  0  1  1  0  1  1
159   0  1  2  0  1  2  2  0  1  1  2  0  1  0  0  0
160
161 --> [u, km] = unique(M)
162  u  =
163   0
164   1
165   2
166
167  km  =
168    2.
169    4.
170    1.
171
172 --> [uc, kmc] = unique(M, "c")
173  uc  =
174   0  0  0  1  1  1  2  2
175   0  1  2  0  1  2  0  2
176
177  kmc  =
178    14.   2.   11.   12.   5.   6.   1.   3.
179 ]]></screen>
180         <para>Dédoublonnement de nombres complexes :</para>
181         <programlisting role="example"><![CDATA[
182 i = %i;
183 c = [1+i, 1-i, -i, i, -i, 1+i]
184 [u, k] = unique(c)
185 [uc, kc] = unique(c, "c")
186  ]]></programlisting>
187     <screen><![CDATA[
188 --> c = [1+i, 1-i, -i, i, -i, 1+i]
189  c  =
190    1. + i     1. - i  -i    i   -i    1. + i
191
192 --> [u, k] = unique(c)
193  u  =
194   -i    i    1. - i   1. + i
195
196  k  =
197    3.   4.   2.   1.
198 ]]></screen>
199
200     <para>Dédoublonnement de textes :</para>
201         <programlisting role="example"><![CDATA[
202 t = ["BA" "BB" "AB" "BA" "AB" "BA" "AB" "AB" "BA" "AA" "AB" "BA" "BA" "BA" "AA"
203      "AA" "AB" "AA" "AA" "BB" "BB" "BB" "BA" "AB" "AB" "BB" "BB" "AB" "AB" "AA"
204     ]
205 u = unique(t)'
206 [u, kt, ku, nb] = unique(t(1,:))
207 [u, kt] = unique(t(1,:), "keepOrder")        // ordre initial conservé
208 [uc, ktc, kuc, nb] = unique(t, "c")
209 [uc, ktc, kuc, nb] = unique(t, "c", "keepOrder")  // ordre initial des colonnes conservé
210  ]]></programlisting>
211     <screen><![CDATA[
212 --> t = ["BA" "BB" "AB" "BA" "AB" "BA" "AB" "AB" "BA" "AA" "AB" "BA" "BA" "BA" "AA"
213   >      "AA" "AB" "AA" "AA" "BB" "BB" "BB" "BA" "AB" "AB" "BB" "BB" "AB" "AB" "AA"
214   >     ]
215  t  =
216 !BA  BB  AB  BA  AB  BA  AB  AB  BA  AA  AB  BA  BA  BA  AA  !
217 !AA  AB  AA  AA  BB  BB  BB  BA  AB  AB  BB  BB  AB  AB  AA  !
218
219 --> u = unique(t)'
220  u  =
221 !AA  AB  BA  BB  !
222
223 --> [u, kt, ku, nb] = unique(t(1,:))
224  u  =
225 !AA  AB  BA  BB  !
226
227  kt  =
228    10.   3.   1.   2.
229
230  nb  =
231    2.   5.   7.   1.
232
233 --> [u, kt] = unique(t(1,:), "keepOrder")  // ordre initial conservé
234  u  =
235 !BA  BB  AB  AA  !
236
237  kt  =
238    1.   2.   3.   10.
239
240 --> [uc, ktc, kuc, nb] = unique(t, "c")
241  uc  =
242 !AA  AA  AB  AB  AB  BA  BA  BA  BB  !             colonnes triées
243 !AA  AB  AA  BA  BB  AA  AB  BB  AB  !
244
245  ktc  =
246    15.   10.   3.   8.   5.   1.   9.   6.   2.
247
248  nb  =
249    1.   1.   1.   1.   3.   2.   3.   2.   1.
250
251 --> [uc, ktc, kuc, nb] = unique(t, "c", "keepOrder")  // ordre initial des colonnes conservé
252  uc  =
253 !BA  BB  AB  AB  BA  AB  BA  AA  AA  !
254 !AA  AB  AA  BB  BB  BA  AB  AB  AA  !
255
256  ktc  =
257    1.   2.   3.   5.   6.   8.   9.   10.   15.
258
259  nb  =
260    2.   1.   1.   3.   2.   1.   3.   1.   1.
261 ]]></screen>
262         <para/>
263         <para>Avec des valeurs Nan (et Inf). Option "uniqueNan" :</para>
264         <programlisting role="example"><![CDATA[
265 M = [2  2  %nan  1     2  0     1  %nan  0    %nan
266      1  0  1     %nan  0  %inf  0  1     %inf 1
267     ];
268 [v, km, kv, n] = unique(M); v',n'
269 [v, km, kv, n] = unique(M, "uniqueNan"); v',n'
270 unique(M, "c")
271 [v, kmc, kvc, n] = unique(M, "c", "uniqueNan")
272  ]]></programlisting>
273     <screen><![CDATA[
274 --> M
275  M  =
276    2.   2.   Nan   1.    2.   0.    1.   Nan   0.    Nan
277    1.   0.   1.    Nan   0.   Inf   0.   1.    Inf   1.
278
279 --> [v, km, kv, n] = unique(M); v',n'
280  ans  =
281    0.   1.   2.   Inf   Nan   Nan   Nan   Nan
282
283  ans  =
284    5.   6.   3.   2.   1.   1.   1.   1.
285
286 --> [v, km, kv, n] = unique(M, "uniqueNan"); v',n'
287  ans  =
288    0.   1.   2.   Inf   Nan
289
290  ans  =
291    5.   6.   3.   2.   4.
292
293 --> unique(M, "c")
294  ans  =
295    0.    1.   1.    2.   2.   Nan   Nan   Nan
296    Inf   0.   Nan   0.   1.   1.    1.    1.
297
298 --> [v, kmc, kvc, n] = unique(M, "c", "uniqueNan")
299  v  =
300    0.    1.   1.    2.   2.   Nan
301    Inf   0.   Nan   0.   1.   1.
302
303  kmc  =
304    6.   7.   4.   2.   1.   3.
305
306  n  =
307    2.   1.   1.   2.   1.   3.
308 ]]></screen>
309     </refsection>
310     <refsection role="see also">
311         <title>Voir aussi</title>
312         <simplelist type="inline">
313             <member>
314                 <link linkend="members">members</link>
315             </member>
316             <member>
317                 <link linkend="gsort">gsort</link>
318             </member>
319             <member>
320                 <link linkend="vectorfind">vectorfind</link>
321             </member>
322             <member>
323                 <link linkend="grep">grep</link>
324             </member>
325             <member>
326                 <link linkend="union">union</link>
327             </member>
328             <member>
329                 <link linkend="intersect">intersect</link>
330             </member>
331         </simplelist>
332     </refsection>
333     <refsection role="history">
334         <title>Historique</title>
335         <revhistory>
336             <revision>
337                 <revnumber>6.0.2</revnumber>
338                 <revdescription>
339                     unique() peut maintenant être utilisée pour dédoublonner des nombres complexes.
340                 </revdescription>
341             </revision>
342             <revision>
343                 <revnumber>6.1.0</revnumber>
344                 <revdescription>
345                     <itemizedlist>
346                         <listitem>
347                             Options "keepOrder" et "uniqueNan" ajoutées.
348                         </listitem>
349                         <listitem>
350                             4ème résultat <literal>nb</literal> ajouté.
351                         </listitem>
352                     </itemizedlist>
353                 </revdescription>
354             </revision>
355         </revhistory>
356     </refsection>
357 </refentry>