* Bugs 15866 & 15867 fixed: setdiff() + 'r'|'c' & integers
[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 - 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> ищутся среди строк в <literal>b</literal>.
60                         </listitem>
61                         <listitem>
62                             <literal>"c"</literal>: столбцы из <literal>a</literal> ищутся среди
63                             столбцов в <literal>b</literal>.
64                         </listitem>
65                         <listitem>
66                             <varname>orien</varname> не указано: элементы из <literal>a</literal> 
67                             ищутся среди элементов <literal>b</literal>.
68                         </listitem>
69                     </itemizedlist>
70                 </listitem>
71             </varlistentry>
72             <varlistentry>
73                 <term>v</term>
74                 <listitem>
75                     <itemizedlist>
76                         <listitem>
77                             сортированный вектор из компонентов <literal>a</literal>, которые 
78                             отсутствуют в <literal>b</literal>.
79                         </listitem>
80                         <listitem>
81                             <literal>orien="r"</literal>: матрица строк из <literal>a</literal>,
82                             которые отсутствуют в <literal>b</literal>, отсортированный в 
83                             лексикографическом порядке.
84                         </listitem>
85                         <listitem>
86                             <literal>orien="c"</literal>: матрица столбцов из 
87                             <literal>a</literal>, которые отсутствуют в <literal>b</literal>, 
88                             отсортированный в лексикографическом порядке.
89                         </listitem>
90                     </itemizedlist>
91                 </listitem>
92             </varlistentry>
93             <varlistentry>
94                 <term>ka</term>
95                 <listitem>
96                     <para>
97                         вектор линейный индексов выбранных элементов, строк, столбцов из 
98                         <literal>a</literal> таких, что
99                         <itemizedlist>
100                             <listitem>
101                                 <literal>v = a(ka)</literal> либо
102                             </listitem>
103                             <listitem>
104                                 <literal>v = a(ka,:)</literal> (<literal>orien="r"</literal>) либо
105                             </listitem>
106                             <listitem>
107                                 <literal>v = a(:,ka)</literal> (<literal>orien="c"</literal>)
108                             </listitem>
109                         </itemizedlist>
110                     </para>
111                 </listitem>
112             </varlistentry>
113         </variablelist>
114     </refsection>
115     <refsection>
116         <title>Описание</title>
117         <para>
118             <literal>setdiff(a, b,..)</literal> вычисляет и возвращает элементы либо строк либо 
119             столбцов из <literal>a</literal> которые ОТСУТСТВУЮТ в <literal>b</literal>.
120         </para>
121         <para>
122             Все дупликаты (элементы или строк или столбцов) удаляются из <literal>a</literal> и
123             из <literal>b</literal> перед обработкой.
124         </para>
125         <para>
126             Если <literal>a</literal> - гиперматрица и используется опция <literal>"r"</literal>, 
127             то перед обработкой <literal>a</literal> заменяется матрицей, состоящией из строк по 
128             всем своим более высоким размерностям. То же самое и в случае, если 
129             <literal>b</literal> является гиперматрицей. Если исползуется опция 
130             <literal>"c"</literal>, то <literal>a</literal> или/и <literal>"b"</literal> 
131             заменяются соответствующими матрицами, состоящими из всех своих столбцов.
132         </para>
133         <para>
134             Формат результатов представлен в следующей таблице, в соответствии с формой
135             <literal>a</literal> и опцией <literal>orien</literal>. Во всех случаях, если все элементы <literal>a</literal> находятся в <literal>b</literal>, возвращается
136             <literal>[]</literal> для <literal>v</literal> как для <literal>ka</literal>:
137             <table>
138                 <tr>
139                     <th align="right">orien →</th>
140                     <td colspan="2" align="center"><emphasis role="bold">отсутствует</emphasis></td>
141                     <td colspan="2" align="center"><emphasis role="bold">"r"</emphasis></td>
142                     <td colspan="2" align="center"><emphasis role="bold">"c"</emphasis></td>
143                 </tr>
144                 <tr>
145                     <th>a ↓</th><th>v</th><th>ka</th><th>v</th><th>ka</th><th>v</th><th>ka</th>
146                 </tr>
147                 <tr>
148                     <td align="right"><emphasis role="bold">строка</emphasis></td>
149                     <td>cтр</td><td>cтр</td>
150                     <td>cтр</td><td>скал</td>
151                     <td>cтр</td><td>cтр</td>
152                 </tr>
153                 <tr>
154                     <td align="right"><emphasis role="bold">столбец</emphasis></td>
155                     <td>cтлб</td><td>cтлб</td>
156                     <td>cтлб</td><td>cтлб</td>
157                     <td>cтлб</td><td>скал</td>
158                 </tr>
159                 <tr>
160                     <td align="right"><emphasis role="bold">матрица</emphasis></td>
161                     <td>cтлб</td><td>cтлб</td>
162                     <td>матр</td><td>cтлб</td>
163                     <td>матр</td><td>cтр</td>
164                 </tr>
165                 <tr>
166                     <td align="right"><emphasis role="bold">гиперматрица</emphasis></td>
167                     <td>cтлб</td><td>cтлб</td>
168                     <td>матр</td><td>cтлб</td>
169                     <td>матр</td><td>cтр</td>
170                 </tr>
171                 <tr align="center">
172                     <td align="right"><emphasis role="bold">скаляр</emphasis></td>
173                     <td>скал</td><td>скал</td>
174                     <td>скал</td><td>скал</td>
175                     <td>скал</td><td>скал</td>
176                 </tr>
177             </table>
178         </para>
179         <para>
180             <literal>v</literal> и <literal>ka</literal> становятся пустыми 
181             <literal>[]</literal>, если <literal>a</literal> пуста (либо <literal>b</literal>), или все элементы <literal>a</literal> находятся в <literal>b</literal>.
182         </para>
183     </refsection>
184     <refsection>
185         <title>Примеры</title>
186         <para>
187             <emphasis role="bold">Пример №1:</emphasis>
188         </para>
189         <programlisting role="example"><![CDATA[
190 a = grand(1, 10,"uin", 0, 9)
191 b = grand(2, 4, "uin", 0, 9)
192 [d, k] = setdiff(a, b);
193 d, k
194  ]]></programlisting>
195     <screen><![CDATA[
196 --> a = grand(1, 10,"uin", 0, 9)
197  a  =
198    2.   2.   4.   5.   4.   1.   9.   5.   8.   3.
199 --> b = grand(2, 4, "uin", 0, 9)
200  b  =
201    5.   0.   9.   9.
202    5.   6.   0.   4.
203 --> [d, k] = setdiff(a, b);
204 --> d, k
205  d  =
206    1.   2.   3.   8.
207  k  =
208    6.   1.   10.   9.
209  ]]></screen>
210         <para>
211             <emphasis role="bold">Пример №2: постолбцовая обработка</emphasis>
212         </para>
213         <programlisting role="example"><![CDATA[
214 a = grand(2, 7,"uin", 0, 3)
215 b = grand(2, 10, "uin", 0, 3)
216 [d, k] = setdiff(a, b, "c");
217 d, k
218  ]]></programlisting>
219     <screen><![CDATA[
220 --> a = grand(2, 7,"uin", 0, 3)
221  a  =
222    0.   1.   0.   2.   3.   0.   2.
223    2.   2.   2.   1.   0.   1.   2.
224 --> b = grand(2, 10, "uin", 0, 3)
225  b  =
226    1.   1.   3.   1.   1.   1.   3.   0.   2.   0.
227    3.   3.   2.   2.   0.   0.   1.   0.   1.   0.
228 --> [d, k] = setdiff(a, b, "c");
229 --> d, k
230  d  =
231    0.   0.   2.   3.
232    1.   2.   2.   0.
233  k  =
234    6.   1.   7.   5.
235  ]]></screen>
236         <para>
237             <emphasis role="bold">Пример №3: с текстом</emphasis>
238         </para>
239         <programlisting role="example"><![CDATA[
240 v1 = tokens("ab  ca  ba  bb  ca  cb  ba  aa  cc  bc  ac  aa")'
241 v2 = tokens("cc  ac  ca  bb  ac  bc  ab")'
242 [r, k] = setdiff(v1, v2);
243 r, k
244 ]]></programlisting>
245     <screen><![CDATA[
246 --> v1 = tokens("ab  ca  ba  bb  ca  cb  ba  aa  cc  bc  ac  aa")'
247  v1  =
248 !ab  ca  ac  bb  ca  cb  ba  aa  cc  bc  ac  aa  !
249 --> v2 = tokens("cc  ac  ca  bb  ac  bc  ab")'
250  v2  =
251 !cc  ac  ca  bb  ac  bc  ab  !
252 --> [r, k] = setdiff(v1, v2);
253 --> r, k
254  r  =
255 !aa  ba  cb  !
256  k  =
257    8.   3.   6.
258 ]]></screen>
259     </refsection>
260     <refsection role="see also">
261         <title>Смотрите также</title>
262         <simplelist type="inline">
263             <member>
264                 <link linkend="unique">unique</link>
265             </member>
266             <member>
267                 <link linkend="union">union</link>
268             </member>
269             <member>
270                 <link linkend="members">members</link>
271             </member>
272             <member>
273                 <link linkend="vertorfind">vectorfind</link>
274             </member>
275         </simplelist>
276     </refsection>
277     <refsection role="history">
278         <title>История</title>
279         <revhistory>
280             <revision>
281                 <revnumber>&lt; 5.0</revnumber>
282                 <revdescription>
283                     Функция введена.
284                 </revdescription>
285             </revision>
286             <revision>
287                 <revnumber>6.0.2</revnumber>
288                 <revdescription>
289                     Добавлены опции "r" | "c", включая гиперматрицы.
290                 </revdescription>
291             </revision>
292         </revhistory>
293     </refsection>
294 </refentry>