2ab8d4eb8bea5f95b90cd9a256279abfc7d69296
[scilab.git] / scilab / modules / elementary_functions / help / fr_FR / setoperations / intersect.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) 2018 - Samuel GOUGEON
6  *
7  * Copyright (C) 2012 - 2016 - Scilab Enterprises
8  *
9  * This file is hereby licensed under the terms of the GNU GPL v2.0,
10  * pursuant to article 5.3.4 of the CeCILL v.2.1.
11  * This file was originally licensed under the terms of the CeCILL v2.1,
12  * and continues to be available under such terms.
13  * For more information, see the COPYING file which you should have received
14  * along with this program.
15  *
16  -->
17 <refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"
18         xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml"
19         xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook"
20         xmlns:scilab="http://www.scilab.org" xml:id="intersect" xml:lang="fr">
21     <refnamediv>
22         <refname>intersect</refname>
23         <refpurpose>
24             éléments, lignes, ou colonnes communs aux 2 tableaux d'entrée, sans doublon
25         </refpurpose>
26     </refnamediv>
27     <refsynopsisdiv>
28         <title>Syntaxe</title>
29         <synopsis>
30             M = intersect(a, b)
31             M = intersect(a, b, orient)
32             [M, ka] = intersect(..)
33             [M, ka, kb] = intersect(..)
34         </synopsis>
35     </refsynopsisdiv>
36     <refsection>
37         <title>Arguments</title>
38         <variablelist>
39             <varlistentry>
40                 <term>a, b</term>
41                 <listitem>
42                     <para>
43                         vecteurs, matrices ou hypermatrices d'entiers encodés, de nombres décimaux
44                         réels, ou de texte. <varname>a</varname> et <varname>b</varname> doivent
45                         être du même type de données, mais ont des tailles indépendantes.
46                         Pour les données texte, les caractères UTF sont admis.
47                     </para>
48                 </listitem>
49             </varlistentry>
50             <varlistentry>
51                 <term>orient</term>
52                 <listitem>
53                     <para>
54                         indicateur de traitement par colonnes ou lignes. Valeurs possibles :
55                         1 ou "r", 2 ou "c". Ne peut pas être utilisé lorsque <varname>a</varname>
56                         ou/et <varname>b</varname> est une hypermatrice.
57                     </para>
58                 </listitem>
59             </varlistentry>
60             <varlistentry>
61                 <term>M</term>
62                 <listitem>
63                     <para>
64                         Matrice du type de <varname>a</varname> et <varname>b</varname>.
65                         <itemizedlist>
66                             <listitem>
67                                 Sans <varname>orient</varname>: <varname>M</varname> est un vecteur
68                                 ligne.
69                             </listitem>
70                             <listitem>
71                                 Avec <literal>orient="r"|1</literal>: <varname>M</varname> est une
72                                 matrice empilant les lignes communes à <varname>a</varname> et
73                                 <varname>b</varname>.
74                             </listitem>
75                             <listitem>
76                                 Avec <literal>orient="c"|2</literal>: <varname>M</varname> est une
77                                 matrice concaténant les colonnes communes à <varname>a</varname> et
78                                 <varname>b</varname>.
79                             </listitem>
80                         </itemizedlist>
81                     </para>
82                 </listitem>
83             </varlistentry>
84             <varlistentry>
85                 <term>ka</term>
86                 <listitem>
87                     <para>
88                         Vecteur ligne d'indices dans <varname>a</varname>.
89                     </para>
90                 </listitem>
91             </varlistentry>
92             <varlistentry>
93                 <term>kb</term>
94                 <listitem>
95                     <para>
96                         Vecteur lignes d'indices dans <varname>b</varname>.
97                     </para>
98                 </listitem>
99             </varlistentry>
100         </variablelist>
101     </refsection>
102     <refsection>
103         <title>Description</title>
104         <para>
105             <literal>intersect(a,b)</literal> produit un vecteur ligne des éléments dédoublonnés
106             présents à la fois dans les tableaux <literal>a</literal> et <literal>b</literal>,
107             triés en ordre croissant.
108         </para>
109         <warning>
110             Deux éléments NaN étant toujours considérés comme différents, NaN ou les lignes ou
111             colonnes en contenant ne seront jamais présents dans le résultat <literal>M</literal>.
112         </warning>
113         <para>
114             <literal>[M, ka, kb] = intersect(a,b)</literal> fournit en outre les vecteurs lignes
115             <literal>ka</literal> et <literal>kb</literal> des indices dans <literal>a</literal>
116             et <literal>b</literal> des éléments communs rencontrés à leur première position,
117             tels que <literal>M=a(ka)</literal> and <literal>M=b(kb)</literal>.
118         </para>
119         <refsect3>
120             <title>Lignes ou colonnes en commun</title>
121         <para>
122             Lorsque l'option <varname>orient</varname> est utilisée, la comparaison entre
123             <literal>a</literal> et <literal>b</literal> est réalisée en considérant leurs lignes
124             ou leurs colonnes dans leur entier.
125         </para>
126         <para>
127             <literal>intersect(a,b,"r")</literal> ou <literal>intersect(a,b,1)</literal> fournira
128             la matrice des lignes (sans doublons) présentes à la fois dans <literal>a</literal> et
129             dans <literal>b</literal>, triées en ordre lexicographique croissant.
130             Lorsque <literal>a</literal> et <literal>b</literal> n'ont pas le même nombre de
131             colonnes, [] est retourné sans comparer aucun élément.
132         </para>
133         <para>
134             <literal>[M,ka,kb]=intersect(a,b,"r")</literal> fournit en outre les vecteurs
135             <literal>ka</literal> et <literal>kb</literal> des indices minimaux des lignes communes,
136             indices respectivement dans <literal>a</literal> dans <literal>b</literal>. On a alors
137             <literal>M=a(ka,:)</literal> et <literal>M=b(kb,:)</literal>.
138         </para>
139         <para>
140             <literal>intersect(a,b,"c")</literal> ou <literal>intersect(a,b,2)</literal> réalise
141             la même chose sur les colonnes.
142         </para>
143         </refsect3>
144     </refsection>
145     <refsection>
146         <title>Exemples</title>
147         <programlisting role="example"><![CDATA[
148 A = grand(3, 3, "uin", 0, 9)
149 B = grand(2, 4, "uin", 0, 9)
150 intersect(A, B)
151 [N, ka, kb] = intersect(A,B);
152 ka, kb
153  ]]></programlisting>
154     <screen><![CDATA[
155 --> A = grand(3, 3, "uin", 0, 9)
156  A  =
157    0.   6.   4.
158    6.   6.   6.
159    2.   7.   9.
160
161 --> B = grand(2, 4, "uin", 0, 9)
162  B  =
163    1.   8.   0.   2.
164    6.   2.   2.   1.
165
166 --> intersect(A, B)
167  ans  =
168    0.   2.   6.
169
170 --> [N, ka, kb] = intersect(A,B);
171 --> ka, kb
172  ka  =
173    1.   3.   2.
174  kb  =
175    5.   4.   2.
176 ]]></screen>
177     <para>
178         Dans l'exemple ci-dessus, on notera que 6 est présent quatre fois dans A, aux indices [2 4 5 8].
179         Seule la position d'indice minimal 2 est donnée dans ka. Même situation pour 2 dans B.
180     </para>
181     <para/>
182     <para>
183     La valeur NaN (Not-a-Number) ne peut jamais figurer dans le résultat :
184     </para>
185     <programlisting role="example"><![CDATA[
186 %nan == %nan
187 intersect([1 -2 %nan 3 6], [%nan 1:3])
188  ]]></programlisting>
189     <screen><![CDATA[
190 --> %nan == %nan
191  ans  =
192   F
193
194 --> intersect([1 -2 %nan 3 6], [%nan 1:3])
195  ans  =
196    1.   3.
197 ]]></screen>
198     <para/>
199     <para>
200         intersect() peut aussi traiter des caractères ou du texte. Scilab sait traiter les textes
201         encodés en UTF. Voici un exemple avec du texte en arabe, afin d'obtenir les caractères
202         arabes communs à deux phrases :
203     </para>
204         <programlisting role="example"><![CDATA[
205 A = strsplit("هو برنامج علمي كبير ""Scilab""")'
206 B = strsplit("فهو حر ومفتوح")'
207 intersect(A,B)
208  ]]></programlisting>
209     <screen><![CDATA[
210 --> A = strsplit("هو برنامج علمي كبير ""Scilab""")'
211  A  =
212 !ه  و     ب  ر  ن  ا  م  ج     ع  ل  م  ي     ك  ب  ي  ر     "  S  c  i  l  a  b  "  !
213
214 --> B = strsplit("فهو حر ومفتوح")'
215  B  =
216 !ف  ه  و     ح  ر     و  م  ف  ت  و  ح  !
217
218 --> intersect(A,B)
219  ans  =
220 !   ر  م  ه  و  !
221 ]]></screen>
222     <para/>
223     <para>
224         Lignes ou colonnes communes à deux matrices : l'exemple suivant extrait les colonnes communes
225         à deux matrices d'entiers signés encodés sur un octet :
226     </para>
227     <programlisting role="example"><![CDATA[
228 A = int8(grand(3,5,"uin",0,1))
229 B = int8(grand(3,9,"uin",0,1))
230 [M,ka,kb] = intersect(A, B, "c");
231 M, ka, kb
232  ]]></programlisting>
233     <screen><![CDATA[
234 --> A = int8(grand(3,5,"uin",0,1))
235  A  =
236   0  0  1  1  1
237   0  0  1  1  0
238   0  0  0  0  1
239
240 --> B = int8(grand(3,9,"uin",0,1))
241  B  =
242   1  0  1  1  1  0  1  1  1
243   1  0  0  1  1  1  0  0  0
244   1  0  1  0  1  1  1  0  0
245
246 --> [M,ka,kb] = intersect(A, B, "c");
247 --> M, ka, kb
248  M  =
249   0  1  1
250   0  0  1
251   0  1  0
252
253  ka  =
254    1.   5.   3.
255
256  kb  =
257    2.   3.   4.
258 ]]></screen>
259     </refsection>
260     <refsection role="see also">
261         <title>Voir aussi</title>
262         <simplelist type="inline">
263             <member>
264                 <link linkend="members">members</link>
265             </member>
266             <member>
267                 <link linkend="unique">unique</link>
268             </member>
269             <member>
270                 <link linkend="gsort">gsort</link>
271             </member>
272             <member>
273                 <link linkend="union">union</link>
274             </member>
275         </simplelist>
276     </refsection>
277 </refentry>