1 <?xml version="1.0" encoding="UTF-8"?>
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
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.
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">
21 <refname>setdiff</refname>
23 возвращает элементы или строк или столбцов массива, которые не принадлежат другому массиву
27 <title>Синтаксис</title>
30 v = setdiff(a, b, orien)
35 <title>Аргументы</title>
41 векторы, матрицы или гиперматрицы вещественных чисел или кодированных
42 целых чисел или строк. Оба должны иметь одинаковые типы данных (или типы
46 Если используется опция <literal>orien="r"</literal>, то
47 <literal>a</literal> и <literal>b</literal> должны иметь одинаковое
48 количество столбцов. Если используется <literal>orien="c"</literal>, то
49 они должны иметь одинаковое количество строк.
56 направленная обработка:
59 <literal>"r"</literal>: строки из <literal>a</literal> ищутся среди строк в <literal>b</literal>.
62 <literal>"c"</literal>: столбцы из <literal>a</literal> ищутся среди
63 столбцов в <literal>b</literal>.
66 <varname>orien</varname> не указано: элементы из <literal>a</literal>
67 ищутся среди элементов <literal>b</literal>.
77 сортированный вектор из компонентов <literal>a</literal>, которые
78 отсутствуют в <literal>b</literal>.
81 <literal>orien="r"</literal>: матрица строк из <literal>a</literal>,
82 которые отсутствуют в <literal>b</literal>, отсортированный в
83 лексикографическом порядке.
86 <literal>orien="c"</literal>: матрица столбцов из
87 <literal>a</literal>, которые отсутствуют в <literal>b</literal>,
88 отсортированный в лексикографическом порядке.
97 вектор линейный индексов выбранных элементов, строк, столбцов из
98 <literal>a</literal> таких, что
101 <literal>v = a(ka)</literal> либо
104 <literal>v = a(ka,:)</literal> (<literal>orien="r"</literal>) либо
107 <literal>v = a(:,ka)</literal> (<literal>orien="c"</literal>)
116 <title>Описание</title>
118 <literal>setdiff(a, b,..)</literal> вычисляет и возвращает элементы либо строк либо
119 столбцов из <literal>a</literal> которые ОТСУТСТВУЮТ в <literal>b</literal>.
122 Все дупликаты (элементы или строк или столбцов) удаляются из <literal>a</literal> и
123 из <literal>b</literal> перед обработкой.
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 заменяются соответствующими матрицами, состоящими из всех своих столбцов.
134 Формат результатов представлен в следующей таблице, в соответствии с формой
135 <literal>a</literal> и опцией <literal>orien</literal>. Во всех случаях, если все элементы <literal>a</literal> находятся в <literal>b</literal>, возвращается
136 <literal>[]</literal> для <literal>v</literal> как для <literal>ka</literal>:
139 <th align="right">orien →</th>
140 <td colspan="2" align="center">
141 <emphasis role="bold">отсутствует</emphasis>
143 <td colspan="2" align="center">
144 <emphasis role="bold">"r"</emphasis>
146 <td colspan="2" align="center">
147 <emphasis role="bold">"c"</emphasis>
151 <th>a ↓</th><th>v</th><th>ka</th><th>v</th><th>ka</th><th>v</th><th>ka</th>
155 <emphasis role="bold">строка</emphasis>
157 <td>cтр</td><td>cтр</td>
158 <td>cтр</td><td>скал</td>
159 <td>cтр</td><td>cтр</td>
163 <emphasis role="bold">столбец</emphasis>
165 <td>cтлб</td><td>cтлб</td>
166 <td>cтлб</td><td>cтлб</td>
167 <td>cтлб</td><td>скал</td>
171 <emphasis role="bold">матрица</emphasis>
173 <td>cтлб</td><td>cтлб</td>
174 <td>матр</td><td>cтлб</td>
175 <td>матр</td><td>cтр</td>
179 <emphasis role="bold">гиперматрица</emphasis>
181 <td>cтлб</td><td>cтлб</td>
182 <td>матр</td><td>cтлб</td>
183 <td>матр</td><td>cтр</td>
187 <emphasis role="bold">скаляр</emphasis>
189 <td>скал</td><td>скал</td>
190 <td>скал</td><td>скал</td>
191 <td>скал</td><td>скал</td>
196 <literal>v</literal> и <literal>ka</literal> становятся пустыми
197 <literal>[]</literal>, если <literal>a</literal> пуста (либо <literal>b</literal>), или все элементы <literal>a</literal> находятся в <literal>b</literal>.
201 <title>Примеры</title>
203 <emphasis role="bold">Пример №1:</emphasis>
205 <programlisting role="example"><![CDATA[
206 a = grand(1, 10,"uin", 0, 9)
207 b = grand(2, 4, "uin", 0, 9)
208 [d, k] = setdiff(a, b);
212 --> a = grand(1, 10,"uin", 0, 9)
214 2. 2. 4. 5. 4. 1. 9. 5. 8. 3.
215 --> b = grand(2, 4, "uin", 0, 9)
219 --> [d, k] = setdiff(a, b);
227 <emphasis role="bold">Пример №2: постолбцовая обработка</emphasis>
229 <programlisting role="example"><![CDATA[
230 a = grand(2, 7,"uin", 0, 3)
231 b = grand(2, 10, "uin", 0, 3)
232 [d, k] = setdiff(a, b, "c");
236 --> a = grand(2, 7,"uin", 0, 3)
240 --> b = grand(2, 10, "uin", 0, 3)
242 1. 1. 3. 1. 1. 1. 3. 0. 2. 0.
243 3. 3. 2. 2. 0. 0. 1. 0. 1. 0.
244 --> [d, k] = setdiff(a, b, "c");
253 <emphasis role="bold">Пример №3: с текстом</emphasis>
255 <programlisting role="example"><![CDATA[
256 v1 = tokens("ab ca ba bb ca cb ba aa cc bc ac aa")'
257 v2 = tokens("cc ac ca bb ac bc ab")'
258 [r, k] = setdiff(v1, v2);
262 --> v1 = tokens("ab ca ba bb ca cb ba aa cc bc ac aa")'
264 !ab ca ac bb ca cb ba aa cc bc ac aa !
265 --> v2 = tokens("cc ac ca bb ac bc ab")'
267 !cc ac ca bb ac bc ab !
268 --> [r, k] = setdiff(v1, v2);
276 <refsection role="see also">
277 <title>Смотрите также</title>
278 <simplelist type="inline">
280 <link linkend="unique">unique</link>
283 <link linkend="union">union</link>
286 <link linkend="members">members</link>
289 <link linkend="vectorfind">vectorfind</link>
293 <refsection role="history">
294 <title>История</title>
297 <revnumber>< 5.0</revnumber>
303 <revnumber>6.0.2</revnumber>
305 Добавлены опции "r" | "c", включая гиперматрицы.