* Bug 15737 fixed: setdiff() dit not support complex numbers
[scilab.git] / scilab / modules / elementary_functions / help / ru_RU / setoperations / setdiff.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) 2018 - 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="setdiff" xml:lang="ru">
20     <refnamediv>
21         <refname>setdiff</refname>
22         <refpurpose>
23             возвращает элементы или строк или столбцов массива, которые не принадлежат другому массиву
24         </refpurpose>
25     </refnamediv>
26     <refsynopsisdiv>
27         <title>Синтаксис</title>
28         <synopsis>
29             v = setdiff(a, b)
30             v = setdiff(a, b, orien)
31             [v, ka] = setdiff(..)
32         </synopsis>
33     </refsynopsisdiv>
34     <refsection>
35         <title>Аргументы</title>
36         <variablelist>
37             <varlistentry>
38                 <term>a, b</term>
39                 <listitem>
40                     <para>
41                         векторы, матрицы или гиперматрицы действительных или комплексных чисел,
42                         или закодированные целые числа, или строки.
43                         Оба должны иметь одинаковые типы данных (или типы целых чисел).
44                     </para>
45                     <para>
46                         Если используется опция <literal>orien="r"</literal>, то
47                         <literal>a</literal> и <literal>b</literal> должны иметь одинаковое
48                         количество столбцов. Если используется <literal>orien="c"</literal>, то
49                         они должны иметь одинаковое количество строк.
50                     </para>
51                 </listitem>
52             </varlistentry>
53             <varlistentry>
54                 <term>orien</term>
55                 <listitem>
56                     направленная обработка:
57                     <itemizedlist>
58                         <listitem>
59                             <literal>"r"</literal>: строки из <literal>a</literal> ищутся среди
60                             строк в <literal>b</literal>.
61                         </listitem>
62                         <listitem>
63                             <literal>"c"</literal>: столбцы из <literal>a</literal> ищутся среди
64                             столбцов в <literal>b</literal>.
65                         </listitem>
66                         <listitem>
67                             <varname>orien</varname> не указано: элементы из <literal>a</literal>
68                             ищутся среди элементов <literal>b</literal>.
69                         </listitem>
70                     </itemizedlist>
71                 </listitem>
72             </varlistentry>
73             <varlistentry>
74                 <term>v</term>
75                 <listitem>
76                     <itemizedlist>
77                         <listitem>
78                             сортированный вектор из компонентов <literal>a</literal>, которые
79                             отсутствуют в <literal>b</literal>.
80                         </listitem>
81                         <listitem>
82                             <literal>orien="r"</literal>: матрица строк из <literal>a</literal>,
83                             которые отсутствуют в <literal>b</literal>, отсортированный в
84                             лексикографическом порядке.
85                         </listitem>
86                         <listitem>
87                             <literal>orien="c"</literal>: матрица столбцов из
88                             <literal>a</literal>, которые отсутствуют в <literal>b</literal>,
89                             отсортированный в лексикографическом порядке.
90                         </listitem>
91                     </itemizedlist>
92                 </listitem>
93             </varlistentry>
94             <varlistentry>
95                 <term>ka</term>
96                 <listitem>
97                     <para>
98                         вектор линейный индексов выбранных элементов, строк, столбцов из
99                         <literal>a</literal> таких, что
100                         <itemizedlist>
101                             <listitem>
102                                 <literal>v = a(ka)</literal> либо
103                             </listitem>
104                             <listitem>
105                                 <literal>v = a(ka,:)</literal> (<literal>orien="r"</literal>) либо
106                             </listitem>
107                             <listitem>
108                                 <literal>v = a(:,ka)</literal> (<literal>orien="c"</literal>)
109                             </listitem>
110                         </itemizedlist>
111                     </para>
112                 </listitem>
113             </varlistentry>
114         </variablelist>
115     </refsection>
116     <refsection>
117         <title>Описание</title>
118         <para>
119             <literal>setdiff(a, b,..)</literal> вычисляет и возвращает элементы либо строк либо
120             столбцов из <literal>a</literal> которые ОТСУТСТВУЮТ в <literal>b</literal>.
121         </para>
122         <para>
123             Все дупликаты (элементы или строк или столбцов) удаляются из <literal>a</literal> и
124             из <literal>b</literal> перед обработкой.
125         </para>
126         <para>
127             Если <literal>a</literal> - гиперматрица и используется опция <literal>"r"</literal>,
128             то перед обработкой <literal>a</literal> заменяется матрицей, состоящией из строк по
129             всем своим более высоким размерностям. То же самое и в случае, если
130             <literal>b</literal> является гиперматрицей. Если исползуется опция
131             <literal>"c"</literal>, то <literal>a</literal> или/и <literal>"b"</literal>
132             заменяются соответствующими матрицами, состоящими из всех своих столбцов.
133         </para>
134         <para>
135             Формат результатов представлен в следующей таблице, в соответствии с формой
136             <literal>a</literal> и опцией <literal>orien</literal>. Во всех случаях, если все
137             элементы <literal>a</literal> находятся в <literal>b</literal>, возвращается
138             <literal>[]</literal> для <literal>v</literal> как для <literal>ka</literal>:
139             <table>
140                 <tr>
141                     <th align="right">orien →</th>
142                     <td colspan="2" align="center">
143                         <emphasis role="bold">отсутствует</emphasis>
144                     </td>
145                     <td colspan="2" align="center">
146                         <emphasis role="bold">"r"</emphasis>
147                     </td>
148                     <td colspan="2" align="center">
149                         <emphasis role="bold">"c"</emphasis>
150                     </td>
151                 </tr>
152                 <tr>
153                     <th>a ↓</th><th>v</th><th>ka</th><th>v</th><th>ka</th><th>v</th><th>ka</th>
154                 </tr>
155                 <tr>
156                     <td align="right">
157                         <emphasis role="bold">строка</emphasis>
158                     </td>
159                     <td>cтр</td><td>cтр</td>
160                     <td>cтр</td><td>скал</td>
161                     <td>cтр</td><td>cтр</td>
162                 </tr>
163                 <tr>
164                     <td align="right">
165                         <emphasis role="bold">столбец</emphasis>
166                     </td>
167                     <td>cтлб</td><td>cтлб</td>
168                     <td>cтлб</td><td>cтлб</td>
169                     <td>cтлб</td><td>скал</td>
170                 </tr>
171                 <tr>
172                     <td align="right">
173                         <emphasis role="bold">матрица</emphasis>
174                     </td>
175                     <td>cтлб</td><td>cтлб</td>
176                     <td>матр</td><td>cтлб</td>
177                     <td>матр</td><td>cтр</td>
178                 </tr>
179                 <tr>
180                     <td align="right">
181                         <emphasis role="bold">гиперматрица</emphasis>
182                     </td>
183                     <td>cтлб</td><td>cтлб</td>
184                     <td>матр</td><td>cтлб</td>
185                     <td>матр</td><td>cтр</td>
186                 </tr>
187                 <tr align="center">
188                     <td align="right">
189                         <emphasis role="bold">скаляр</emphasis>
190                     </td>
191                     <td>скал</td><td>скал</td>
192                     <td>скал</td><td>скал</td>
193                     <td>скал</td><td>скал</td>
194                 </tr>
195             </table>
196         </para>
197         <para>
198             <literal>v</literal> и <literal>ka</literal> становятся пустыми
199             <literal>[]</literal>, если <literal>a</literal> пуста (либо <literal>b</literal>),
200             или все элементы <literal>a</literal> находятся в <literal>b</literal>.
201         </para>
202     </refsection>
203     <refsection>
204         <title>Примеры</title>
205         <para>
206             <emphasis role="bold">Пример №1:</emphasis>
207         </para>
208         <programlisting role="example"><![CDATA[
209 a = grand(1, 10,"uin", 0, 9)
210 b = grand(2, 4, "uin", 0, 9)
211 [d, k] = setdiff(a, b);
212 d, k
213  ]]></programlisting>
214         <screen><![CDATA[
215 --> a = grand(1, 10,"uin", 0, 9)
216  a  =
217    2.   2.   4.   5.   4.   1.   9.   5.   8.   3.
218 --> b = grand(2, 4, "uin", 0, 9)
219  b  =
220    5.   0.   9.   9.
221    5.   6.   0.   4.
222 --> [d, k] = setdiff(a, b);
223 --> d, k
224  d  =
225    1.   2.   3.   8.
226  k  =
227    6.   1.   10.   9.
228 ]]></screen>
229         <para>
230             <emphasis role="bold">Пример №2: постолбцовая обработка</emphasis>
231         </para>
232         <programlisting role="example"><![CDATA[
233 a = grand(2, 7,"uin", 0, 3)
234 b = grand(2, 10, "uin", 0, 3)
235 [d, k] = setdiff(a, b, "c");
236 d, k
237  ]]></programlisting>
238         <screen><![CDATA[
239 --> a = grand(2, 7,"uin", 0, 3)
240  a  =
241    0.   1.   0.   2.   3.   0.   2.
242    2.   2.   2.   1.   0.   1.   2.
243 --> b = grand(2, 10, "uin", 0, 3)
244  b  =
245    1.   1.   3.   1.   1.   1.   3.   0.   2.   0.
246    3.   3.   2.   2.   0.   0.   1.   0.   1.   0.
247 --> [d, k] = setdiff(a, b, "c");
248 --> d, k
249  d  =
250    0.   0.   2.   3.
251    1.   2.   2.   0.
252  k  =
253    6.   1.   7.   5.
254 ]]></screen>
255         <para>
256             <emphasis role="bold">Пример №3: с текстом</emphasis>
257         </para>
258         <programlisting role="example"><![CDATA[
259 v1 = tokens("ab  ca  ba  bb  ca  cb  ba  aa  cc  bc  ac  aa")'
260 v2 = tokens("cc  ac  ca  bb  ac  bc  ab")'
261 [r, k] = setdiff(v1, v2);
262 r, k
263 ]]></programlisting>
264         <screen><![CDATA[
265 --> v1 = tokens("ab  ca  ba  bb  ca  cb  ba  aa  cc  bc  ac  aa")'
266  v1  =
267 !ab  ca  ac  bb  ca  cb  ba  aa  cc  bc  ac  aa  !
268 --> v2 = tokens("cc  ac  ca  bb  ac  bc  ab")'
269  v2  =
270 !cc  ac  ca  bb  ac  bc  ab  !
271 --> [r, k] = setdiff(v1, v2);
272 --> r, k
273  r  =
274 !aa  ba  cb  !
275  k  =
276    8.   3.   6.
277 ]]></screen>
278     </refsection>
279     <refsection role="see also">
280         <title>Смотрите также</title>
281         <simplelist type="inline">
282             <member>
283                 <link linkend="unique">unique</link>
284             </member>
285             <member>
286                 <link linkend="union">union</link>
287             </member>
288             <member>
289                 <link linkend="members">members</link>
290             </member>
291             <member>
292                 <link linkend="vectorfind">vectorfind</link>
293             </member>
294         </simplelist>
295     </refsection>
296     <refsection role="history">
297         <title>История</title>
298         <revhistory>
299             <revision>
300                 <revnumber>&lt; 5.0</revnumber>
301                 <revdescription>
302                     Функция введена.
303                 </revdescription>
304             </revision>
305             <revision>
306                 <revnumber>6.0.2</revnumber>
307                 <revdescription>
308                     Добавлены опции "r" | "c", включая гиперматрицы.
309                 </revdescription>
310             </revision>
311             <revision>
312                 <revnumber>6.1.0</revnumber>
313                 <revdescription>
314                     Теперь допускаются комплексные числа.
315                 </revdescription>
316             </revision>
317         </revhistory>
318     </refsection>
319 </refentry>