* Bug 15734 fixed: intersect() dit not support complex numbers
[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                     vecteurs, matrices ou hypermatrices d'entiers encodés, de nombres réels ou
43                     complexes, ou de texte. <varname>a</varname> et <varname>b</varname> doivent
44                     être du même type de données, mais ont des tailles indépendantes.
45                     Pour les données texte, les caractères UTF sont admis.
46                     <para/>
47                 </listitem>
48             </varlistentry>
49             <varlistentry>
50                 <term>orient</term>
51                 <listitem>
52                     indicateur de traitement par colonnes ou lignes. Valeurs possibles :
53                     1 ou "r", 2 ou "c". Ne peut pas être utilisé lorsque <varname>a</varname>
54                     ou/et <varname>b</varname> est une hypermatrice.
55                     <para/>
56                 </listitem>
57             </varlistentry>
58             <varlistentry>
59                 <term>M</term>
60                 <listitem>
61                     <para>
62                         Matrice du type de <varname>a</varname> et <varname>b</varname>.
63                         <itemizedlist>
64                             <listitem>
65                                 Sans <varname>orient</varname>: <varname>M</varname> est un vecteur
66                                 ligne.
67                             </listitem>
68                             <listitem>
69                                 Avec <literal>orient="r"|1</literal>: <varname>M</varname> est une
70                                 matrice empilant les lignes communes à <varname>a</varname> et
71                                 <varname>b</varname>.
72                             </listitem>
73                             <listitem>
74                                 Avec <literal>orient="c"|2</literal>: <varname>M</varname> est une
75                                 matrice concaténant les colonnes communes à <varname>a</varname> et
76                                 <varname>b</varname>.
77                             </listitem>
78                         </itemizedlist>
79                     </para>
80                 </listitem>
81             </varlistentry>
82             <varlistentry>
83                 <term>ka</term>
84                 <listitem>
85                     Vecteur ligne d'indices dans <varname>a</varname>.
86                     <para/>
87                 </listitem>
88             </varlistentry>
89             <varlistentry>
90                 <term>kb</term>
91                 <listitem>
92                     Vecteur lignes d'indices dans <varname>b</varname>.
93                     <para/>
94                 </listitem>
95             </varlistentry>
96         </variablelist>
97     </refsection>
98     <refsection>
99         <title>Description</title>
100         <para>
101             <literal>intersect(a,b)</literal> produit un vecteur ligne des éléments dédoublonnés
102             présents à la fois dans les tableaux <literal>a</literal> et <literal>b</literal>,
103             triés en ordre croissant
104             <itemizedlist>
105                 <listitem>
106                     pour les nombres complexes : par modules croissants, puis par phases croissantes.
107                 </listitem>
108                 <listitem>
109                     pour le texte : par ordre alphabétique.
110                 </listitem>
111             </itemizedlist>
112         </para>
113         <warning>
114             Deux éléments NaN étant toujours considérés comme différents, NaN ou les lignes ou
115             colonnes en contenant ne seront jamais présents dans le résultat <literal>M</literal>.
116         </warning>
117         <para>
118             <literal>[M, ka, kb] = intersect(a,b)</literal> fournit en outre les vecteurs lignes
119             <literal>ka</literal> et <literal>kb</literal> des indices dans <literal>a</literal>
120             et <literal>b</literal> des éléments communs rencontrés à leur première position,
121             tels que <literal>M=a(ka)</literal> and <literal>M=b(kb)</literal>.
122         </para>
123         <refsect3>
124             <title>Lignes ou colonnes en commun</title>
125         <para>
126             Lorsque l'option <varname>orient</varname> est utilisée, la comparaison entre
127             <literal>a</literal> et <literal>b</literal> est réalisée en considérant leurs lignes
128             ou leurs colonnes dans leur entier.
129         </para>
130         <para>
131             <literal>intersect(a,b,"r")</literal> ou <literal>intersect(a,b,1)</literal> fournira
132             la matrice des lignes (sans doublons) présentes à la fois dans <literal>a</literal> et
133             dans <literal>b</literal>, triées en ordre lexicographique croissant.
134             Lorsque <literal>a</literal> et <literal>b</literal> n'ont pas le même nombre de
135             colonnes, [] est retourné sans comparer aucun élément.
136         </para>
137         <para>
138             <literal>[M,ka,kb]=intersect(a,b,"r")</literal> fournit en outre les vecteurs
139             <literal>ka</literal> et <literal>kb</literal> des indices minimaux des lignes communes,
140             indices respectivement dans <literal>a</literal> dans <literal>b</literal>. On a alors
141             <literal>M=a(ka,:)</literal> et <literal>M=b(kb,:)</literal>.
142         </para>
143         <para>
144             <literal>intersect(a,b,"c")</literal> ou <literal>intersect(a,b,2)</literal> réalise
145             la même chose sur les colonnes.
146         </para>
147         </refsect3>
148     </refsection>
149     <refsection>
150         <title>Exemples</title>
151         <programlisting role="example"><![CDATA[
152 A = grand(3, 3, "uin", 0, 9)
153 B = grand(2, 4, "uin", 0, 9)
154 intersect(A, B)
155 [N, ka, kb] = intersect(A,B);
156 ka, kb
157  ]]></programlisting>
158     <screen><![CDATA[
159 --> A = grand(3, 3, "uin", 0, 9)
160  A  =
161    0.   6.   4.
162    6.   6.   6.
163    2.   7.   9.
164
165 --> B = grand(2, 4, "uin", 0, 9)
166  B  =
167    1.   8.   0.   2.
168    6.   2.   2.   1.
169
170 --> intersect(A, B)
171  ans  =
172    0.   2.   6.
173
174 --> [N, ka, kb] = intersect(A,B);
175 --> ka, kb
176  ka  =
177    1.   3.   2.
178  kb  =
179    5.   4.   2.
180 ]]></screen>
181     <para>
182         Dans l'exemple ci-dessus, on notera que 6 est présent quatre fois dans A, aux indices [2 4 5 8].
183         Seule la position d'indice minimal 2 est donnée dans ka. Même situation pour 2 dans B.
184     </para>
185     <para/>
186     <para>
187     La valeur NaN (Not-a-Number) ne peut jamais figurer dans le résultat :
188     </para>
189     <programlisting role="example"><![CDATA[
190 %nan == %nan
191 intersect([1 -2 %nan 3 6], [%nan 1:3])
192  ]]></programlisting>
193     <screen><![CDATA[
194 --> %nan == %nan
195  ans  =
196   F
197
198 --> intersect([1 -2 %nan 3 6], [%nan 1:3])
199  ans  =
200    1.   3.
201 ]]></screen>
202     <para/>
203     <para>
204         intersect() peut aussi traiter des caractères ou du texte. Scilab sait traiter les textes
205         encodés en UTF. Voici un exemple avec du texte en arabe, afin d'obtenir les caractères
206         arabes communs à deux phrases :
207     </para>
208         <programlisting role="example"><![CDATA[
209 A = strsplit("هو برنامج علمي كبير ""Scilab""")'
210 B = strsplit("فهو حر ومفتوح")'
211 intersect(A,B)
212  ]]></programlisting>
213     <screen><![CDATA[
214 --> A = strsplit("هو برنامج علمي كبير ""Scilab""")'
215  A  =
216 !ه  و     ب  ر  ن  ا  م  ج     ع  ل  م  ي     ك  ب  ي  ر     "  S  c  i  l  a  b  "  !
217
218 --> B = strsplit("فهو حر ومفتوح")'
219  B  =
220 !ف  ه  و     ح  ر     و  م  ف  ت  و  ح  !
221
222 --> intersect(A,B)
223  ans  =
224 !   ر  م  ه  و  !
225 ]]></screen>
226     <para/>
227     <para>
228         Lignes ou colonnes communes à deux matrices : l'exemple suivant extrait les colonnes communes
229         à deux matrices d'entiers signés encodés sur un octet :
230     </para>
231     <programlisting role="example"><![CDATA[
232 A = int8(grand(3,5,"uin",0,1))
233 B = int8(grand(3,9,"uin",0,1))
234 [M,ka,kb] = intersect(A, B, "c");
235 M, ka, kb
236  ]]></programlisting>
237     <screen><![CDATA[
238 --> A = int8(grand(3,5,"uin",0,1))
239  A  =
240   0  0  1  1  1
241   0  0  1  1  0
242   0  0  0  0  1
243
244 --> B = int8(grand(3,9,"uin",0,1))
245  B  =
246   1  0  1  1  1  0  1  1  1
247   1  0  0  1  1  1  0  0  0
248   1  0  1  0  1  1  1  0  0
249
250 --> [M,ka,kb] = intersect(A, B, "c");
251 --> M, ka, kb
252  M  =
253   0  1  1
254   0  0  1
255   0  1  0
256
257  ka  =
258    1.   5.   3.
259
260  kb  =
261    2.   3.   4.
262 ]]></screen>
263     </refsection>
264     <refsection role="see also">
265         <title>Voir aussi</title>
266         <simplelist type="inline">
267             <member>
268                 <link linkend="members">members</link>
269             </member>
270             <member>
271                 <link linkend="unique">unique</link>
272             </member>
273             <member>
274                 <link linkend="gsort">gsort</link>
275             </member>
276             <member>
277                 <link linkend="union">union</link>
278             </member>
279         </simplelist>
280     </refsection>
281     <refsection role="history">
282         <title>Historique</title>
283         <revhistory>
284             <revision>
285                 <revnumber>6.1.0</revnumber>
286                 <revdescription>
287                     Les nombres complexes sont désormais acceptés.
288                 </revdescription>
289             </revision>
290         </revhistory>
291     </refsection>
292 </refentry>