746ead16f574c39d735bb3a97a39272c72dcc0e8
[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, k, nb] = unique(M)
29             [N, k, nb] = unique(M, orient)
30             [N, k, nb] = unique(.., "keepOrder")
31             [N, k, 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>k</term>
78                 <listitem>
79                     <para>
80                       Indices des éléments, lignes ou colonnes extraits, tels que
81                       <literal>N(i) = M(k(i))</literal> ou <literal>N(i,:) = M(k(i),:)</literal>
82                       ou <literal>N(:,i) = M(:,k(i))</literal>.
83                     </para>
84                     <para>
85                         <varname>k</varname> est un vecteur ligne si <varname>M</varname>
86                         l'est aussi ou si <literal>orient="c"</literal> est utilisé.
87                         Sinon <varname>k</varname> est en colonne.
88                     </para>
89                 </listitem>
90             </varlistentry>
91             <varlistentry>
92                 <term>nb</term>
93                 <listitem>
94                     <para>
95                       Vecteur d'entiers > 0, au format de <varname>k</varname> :
96                       nombres d'exemplaires dans <varname>M</varname> de chaque entité
97                       (élément, ligne, colonne) retournée dans <varname>N</varname>.
98                     </para>
99                 </listitem>
100             </varlistentry>
101         </variablelist>
102     </refsection>
103     <refsection role="description">
104         <title>Description</title>
105         <para>
106             <literal>unique(M)</literal> renvoie un vecteur contenant les
107             valeurs distinctes contenues dans les termes de <literal>M</literal>
108             classées par ordre croissant.
109         </para>
110         <para>
111             <literal>unique(M,"r")</literal> ou
112             <literal>unique(M,1)</literal>retourne les lignes uniques de
113             <literal>M</literal> triées dans l'ordre lexicographique croissant.
114         </para>
115         <para>
116             <literal>unique(M,"c")</literal> or
117             <literal>unique(M,2)</literal>retourne les colonnes uniques
118             <literal>M</literal> triées dans l'ordre lexicographique croissant.
119         </para>
120         <para>
121             <literal>unique(M,.. "keepOrder")</literal> donne le vecteur des valeurs distinctes
122             de <varname>M</varname> selon leur ordre initial d'apparition dans <varname>M</varname>
123             (au lieu d'être par défaut triées par ordre croissant). L'indicateur
124             <literal>"keepOrder"</literal> est insensible aux minuscules/majuscules.
125         </para>
126         <para>
127             <literal>unique(M,.. "uniqueNan")</literal> considère toute valeur Nan comme égale
128             à toute autre Nan, et les dédoublonne comme pour n'importe quelle autre valeur numérique.
129             Par défaut, toute valeur Nan est distincte de toute autre Nan, y compris elle-même :
130             <literal>%nan&lt;>%nan</literal> est vrai, à moins d'utiliser
131             <literal>"uniqueNan"</literal>. L'indicateur
132             <literal>"uniqueNan"</literal> est insensible aux minuscules/majuscules.
133         </para>
134     </refsection>
135     <refsection role="examples">
136         <title>Exemples</title>
137         <para>Dédoublonnement de nombres :</para>
138         <programlisting role="example"><![CDATA[
139 M = int8([2  0  2  2  1  1  1  2  1  1  0  1  1  0  1  1
140           0  1  2  0  1  2  2  0  1  1  2  0  1  0  0  0
141           ])
142 [u, k] = unique(M)
143 [uc, kc] = unique(M, "c")
144
145 // Obtenir les colonnes dédoublonnées dans leur ordre initial :
146 M(:, gsort(kc,"g","i"))
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, k] = unique(M)
155  u  =
156   0
157   1
158   2
159
160  k  =
161    2.
162    4.
163    1.
164
165 --> [uc, kc] = 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  kc  =
171    14.   2.   11.   12.   5.   6.   1.   3.
172
173 --> // Obtenir les colonnes dédoublonnées dans leur ordre initial :
174 --> M(:, gsort(kc,"g","i"))
175  ans  =
176   2  0  2  1  1  0  1  0
177   0  1  2  1  2  2  0  0
178 ]]></screen>
179         <para>Dédoublonnement de nombres complexes :</para>
180         <programlisting role="example"><![CDATA[
181 i = %i;
182 c = [1+i, 1-i, -i, i, -i, 1+i]
183 [u, k] = unique(c)
184 [uc, kc] = unique(c, "c")
185  ]]></programlisting>
186     <screen><![CDATA[
187 --> c = [1+i, 1-i, -i, i, -i, 1+i]
188  c  =
189    1. + i     1. - i  -i    i   -i    1. + i
190
191 --> [u, k] = unique(c)
192  u  =
193   -i    i    1. - i   1. + i
194
195  k  =
196    3.   4.   2.   1.
197 ]]></screen>
198
199     <para>Dédoublonnement de textes :</para>
200         <programlisting role="example"><![CDATA[
201 t = ["BA" "BB" "AB" "BA" "AB" "BA" "AB" "AB" "BA" "AA" "AB" "BA" "BA" "BA" "AA"
202      "AA" "AB" "AA" "AA" "BB" "BB" "BB" "BA" "AB" "AB" "BB" "BB" "AB" "AB" "AA"
203     ]
204 u = unique(t)'
205 [u, k, nb] = unique(t(1,:))
206 [u, k] = unique(t(1,:), "keepOrder")        // ordre initial conservé
207 [uc, kc, nb] = unique(t, "c")
208 [uc, kc, nb] = unique(t, "c", "keepOrder")  // ordre initial des colonnes conservé
209  ]]></programlisting>
210     <screen><![CDATA[
211 --> t = ["BA" "BB" "AB" "BA" "AB" "BA" "AB" "AB" "BA" "AA" "AB" "BA" "BA" "BA" "AA"
212   >      "AA" "AB" "AA" "AA" "BB" "BB" "BB" "BA" "AB" "AB" "BB" "BB" "AB" "AB" "AA"
213   >     ]
214  t  =
215 !BA  BB  AB  BA  AB  BA  AB  AB  BA  AA  AB  BA  BA  BA  AA  !
216 !AA  AB  AA  AA  BB  BB  BB  BA  AB  AB  BB  BB  AB  AB  AA  !
217
218 --> u = unique(t)'
219  u  =
220 !AA  AB  BA  BB  !
221
222 --> [u, k, nb] = unique(t(1,:))
223  u  =
224 !AA  AB  BA  BB  !
225
226  k  =
227    10.   3.   1.   2.
228
229  nb  =
230    2.   5.   7.   1.
231
232 --> [u, k] = unique(t(1,:), "keepOrder")  // ordre initial conservé
233  u  =
234 !BA  BB  AB  AA  !
235
236  k  =
237    1.   2.   3.   10.
238
239 --> [uc, kc, nb] = unique(t, "c")
240  nb  =
241    1.   1.   1.   1.   3.   2.   3.   2.   1.
242
243  kc  =
244    15.   10.   3.   8.   5.   1.   9.   6.   2.
245
246  uc  =
247 !AA  AA  AB  AB  AB  BA  BA  BA  BB  !             colonnes triées
248 !AA  AB  AA  BA  BB  AA  AB  BB  AB  !
249
250 --> [uc, kc, nb] = unique(t, "c", "keepOrder")  // ordre initial des colonnes conservé
251  uc  =
252 !BA  BB  AB  AB  BA  AB  BA  AA  AA  !
253 !AA  AB  AA  BB  BB  BA  AB  AB  AA  !
254
255  kc  =
256    1.   2.   3.   5.   6.   8.   9.   10.   15.
257
258  nb  =
259    2.   1.   1.   3.   2.   1.   3.   1.   1.
260 ]]></screen>
261         <para/>
262         <para>Avec des valeurs Nan (et Inf). Option "uniqueNan" :</para>
263         <programlisting role="example"><![CDATA[
264 M = [2  2  %nan  1     2  0     1  %nan  0    %nan
265      1  0  1     %nan  0  %inf  0  1     %inf 1
266     ];
267 [v,k,n] = unique(M); v',n'
268 [v,k,n] = unique(M, "uniqueNan"); v',n'
269 unique(M, "c")
270 [v, k, n] = unique(M, "c", "uniqueNan")
271  ]]></programlisting>
272     <screen><![CDATA[
273 --> M
274  M  =
275    2.   2.   Nan   1.    2.   0.    1.   Nan   0.    Nan
276    1.   0.   1.    Nan   0.   Inf   0.   1.    Inf   1.
277
278 --> [v,k,n] = unique(M); v',n'
279  ans  =
280    0.   1.   2.   Inf   Nan   Nan   Nan   Nan
281
282  ans  =
283    5.   6.   3.   2.   1.   1.   1.   1.
284
285 --> [v,k,n] = unique(M, "uniqueNan"); v',n'
286  ans  =
287    0.   1.   2.   Inf   Nan
288
289  ans  =
290    5.   6.   3.   2.   4.
291
292 --> unique(M, "c")
293  ans  =
294    0.    1.   1.    2.   2.   Nan   Nan   Nan
295    Inf   0.   Nan   0.   1.   1.    1.    1.
296
297 --> [v, k, n] = unique(M, "c", "uniqueNan")
298  v  =
299    0.    1.   1.    2.   2.   Nan
300    Inf   0.   Nan   0.   1.   1.
301
302  k  =
303    6.   7.   4.   2.   1.   3.
304
305  n  =
306    2.   1.   1.   2.   1.   3.
307 ]]></screen>
308     </refsection>
309     <refsection role="see also">
310         <title>Voir aussi</title>
311         <simplelist type="inline">
312             <member>
313                 <link linkend="members">members</link>
314             </member>
315             <member>
316                 <link linkend="gsort">gsort</link>
317             </member>
318             <member>
319                 <link linkend="vectorfind">vectorfind</link>
320             </member>
321             <member>
322                 <link linkend="grep">grep</link>
323             </member>
324             <member>
325                 <link linkend="union">union</link>
326             </member>
327             <member>
328                 <link linkend="intersect">intersect</link>
329             </member>
330         </simplelist>
331     </refsection>
332     <refsection role="history">
333         <title>Historique</title>
334         <revhistory>
335             <revision>
336                 <revnumber>6.0.2</revnumber>
337                 <revdescription>
338                     unique() peut maintenant être utilisée pour dédoublonner des nombres complexes.
339                 </revdescription>
340             </revision>
341             <revision>
342                 <revnumber>6.1.0</revnumber>
343                 <revdescription>
344                     <itemizedlist>
345                         <listitem>
346                             Options "keepOrder" et "uniqueNan" ajoutées.
347                         </listitem>
348                         <listitem>
349                             3ème résultat <literal>nb</literal> ajouté.
350                         </listitem>
351                     </itemizedlist>
352                 </revdescription>
353             </revision>
354         </revhistory>
355     </refsection>
356 </refentry>