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) 2017 - 2019 - 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="unique" xml:lang="ru">
21 <refname>unique</refname>
22 <refpurpose>удалить все повторяющиеся компоненты из вектора или матрицы</refpurpose>
25 <title>Синтаксис</title>
27 [N, km, kn, nb] = unique(M)
28 [N, km, kn, nb] = unique(M, orient)
29 [N, km, kn, nb] = unique(.., "keepOrder")
30 [N, km, kn, nb] = unique(.., "uniqueNan")
33 <refsection role="parameters">
34 <title>Аргументы</title>
39 <para>вектор или матрица чисел или строк</para>
45 <para>флаг с возможными значениями: 1 или "r", 2 или "c".
46 Не может использоваться, если <varname>M</varname> является гиперматрицей.
57 Если <varname>orient</varname> не используется: вектор извлечённых
58 <varname>M</varname> компонентов, сортированных в полядке возрастания.
59 Если <varname>M</varname> является вектором-строкой, то <varname>N</varname>
60 так же является вектором-строкой. В случаях всех иных <varname>M</varname>
61 <varname>N</varname> является матрицей или вектором-столбцом.
65 Если <varname>orient</varname> используется: матрица извлечённых
66 <varname>M</varname> строк или столбцов, сортированных в лексикографическом
77 Вектор индексов первых встреченных значений, таких что
78 <literal>N(i) = M(k(i))</literal> или <literal>N(i,:) = M(k(i),:)</literal>
79 или <literal>N(:,i) = M(:,k(i))</literal>.
82 <varname>k</varname> является строкой, если <varname>M</varname> является
83 строкой или если используется <literal>orient="c"</literal>. В проитвном случае
92 Vector of indices of first encountered occurrences, such that
93 <literal>M(i) = N(kn(i))</literal> or <literal>M(i,:) = N(kn(i),:)</literal>
94 or <literal>M(:,i) = N(:,kn(i))</literal>.
102 Вектор целых чисел > 0 той же формы, что и <varname>k</varname>:
103 количество случаев <varname>M</varname> соответствующих непродублированных элементов
104 (компоентов, строк, столбцов) возвращаемых в <varname>N</varname>.
110 <refsection role="description">
111 <title>Описание</title>
113 <literal>unique(M)</literal> возвращает вектор, который содержит уникальные элементы
114 <literal>M</literal> в порядке возрастания.
117 <literal>unique(M,"r")</literal> или <literal>unique(M,1)</literal> возвращает
118 уникальные строки <literal>M</literal> в лексикографическом порядке возрастания.
121 <literal>unique(M,"c")</literal> или <literal>unique(M,2)</literal> возвращает
122 уникальные столбцы <literal>M</literal> в лексикографическом порядке возрастания.
125 <literal>unique(M,.. "keepOrder")</literal> возвращает <varname>M</varname> недублированных
126 входов в их исходном порядке в <varname>M</varname>. <literal>"keepOrder"</literal> нечувствителен
130 <literal>unique(M,.. "uniqueNan")</literal> принимает все значения Nan одинаковыми и не дублирует их.
131 По умолчанию любой Nan отличается от другого Nan включая себя самого: <literal>%nan<>%nan</literal>
132 равен истине, пока не будет использоваться <literal>"uniqueNan"</literal>. Определение
133 <literal>"uniqueNan"</literal> нечувствительно к регистру.
136 <refsection role="examples">
137 <title>Примеры</title>
138 <para>С некотороми числами:</para>
139 <programlisting role="example"><![CDATA[
140 M = int8([2 0 2 2 1 1 1 2 1 1 0 1 1 0 1 1
141 0 1 2 0 1 2 2 0 1 1 2 0 1 0 0 0
144 [uc, kmc] = unique(M, "c")
149 2 0 2 2 1 1 1 2 1 1 0 1 1 0 1 1
150 0 1 2 0 1 2 2 0 1 1 2 0 1 0 0 0
152 --> [u, km] = unique(M)
163 --> [uc, kmc] = unique(M, "c")
169 14. 2. 11. 12. 5. 6. 1. 3.
171 <para>С комплексными числами:</para>
172 <programlisting role="example"><![CDATA[
174 c = [1+i, 1-i, -i, i, -i, 1+i]
176 [uc, kc] = unique(c, "c")
179 --> c = [1+i, 1-i, -i, i, -i, 1+i]
181 1. + i 1. - i -i i -i 1. + i
183 --> [u, k] = unique(c)
191 <para>С текстом:</para>
192 <programlisting role="example"><![CDATA[
193 t = ["BA" "BB" "AB" "BA" "AB" "BA" "AB" "AB" "BA" "AA" "AB" "BA" "BA" "BA" "AA"
194 "AA" "AB" "AA" "AA" "BB" "BB" "BB" "BA" "AB" "AB" "BB" "BB" "AB" "AB" "AA"
197 [u, kt, ku, nb] = unique(t(1,:))
198 [u, kt] = unique(t(1,:), "keepOrder") // сохранение исходного порядка элементов строки №1
199 [uc, ktc, kuc, nb] = unique(t, "c")
200 [uc, ktc, kuc, nb] = unique(t, "c", "keepOrder") // сохранение исходного порядка столбцов
203 --> t = ["BA" "BB" "AB" "BA" "AB" "BA" "AB" "AB" "BA" "AA" "AB" "BA" "BA" "BA" "AA"
204 > "AA" "AB" "AA" "AA" "BB" "BB" "BB" "BA" "AB" "AB" "BB" "BB" "AB" "AB" "AA"
207 !BA BB AB BA AB BA AB AB BA AA AB BA BA BA AA !
208 !AA AB AA AA BB BB BB BA AB AB BB BB AB AB AA !
214 --> [u, kt, ku, nb] = unique(t(1,:))
224 --> [u, kt] = unique(t(1,:), "keepOrder") // сохранение исходного порядка
231 --> [uc, ktc, kuc, nb] = unique(t, "c")
233 !AA AA AB AB AB BA BA BA BB ! сортированные столбцы
234 !AA AB AA BA BB AA AB BB AB !
237 15. 10. 3. 8. 5. 1. 9. 6. 2.
240 1. 1. 1. 1. 3. 2. 3. 2. 1.
242 --> [uc, ktc, kuc, nb] = unique(t, "c", "keepOrder") // сохранение исходного порядка
244 !BA BB AB AB BA AB BA AA AA !
245 !AA AB AA BB BB BA AB AB AA !
248 1. 2. 3. 5. 6. 8. 9. 10. 15.
251 2. 1. 1. 3. 2. 1. 3. 1. 1.
254 <para>Со значениями Nan (и Inf). Опция "uniqueNan":</para>
255 <programlisting role="example"><![CDATA[
256 M = [2 2 %nan 1 2 0 1 %nan 0 %nan
257 1 0 1 %nan 0 %inf 0 1 %inf 1
259 [v, km, kv, n] = unique(M); v',n'
260 [v, km, kv, n] = unique(M, "uniqueNan"); v',n'
262 [v, kmc, kvc, n] = unique(M, "c", "uniqueNan")
267 2. 2. Nan 1. 2. 0. 1. Nan 0. Nan
268 1. 0. 1. Nan 0. Inf 0. 1. Inf 1.
270 --> [v, km, kv, n] = unique(M); v',n'
272 0. 1. 2. Inf Nan Nan Nan Nan
275 5. 6. 3. 2. 1. 1. 1. 1.
277 --> [v, km, kv, n] = unique(M, "uniqueNan"); v',n'
286 0. 1. 1. 2. 2. Nan Nan Nan
287 Inf 0. Nan 0. 1. 1. 1. 1.
289 --> [v, kmc, kvc, n] = unique(M, "c", "uniqueNan")
301 <refsection role="see also">
302 <title>Смотрите также</title>
303 <simplelist type="inline">
305 <link linkend="members">members</link>
308 <link linkend="gsort">gsort</link>
311 <link linkend="vectorfind">vectorfind</link>
314 <link linkend="grep">grep</link>
317 <link linkend="union">union</link>
320 <link linkend="intersect">intersect</link>
324 <refsection role="history">
325 <title>История</title>
328 <revnumber>6.0.2</revnumber>
330 unique() теперь может использоваться для удаления дубликатов комплексных чисел.
334 <revnumber>6.1.0</revnumber>
338 Введены опции "keepOrder" и "uniqueNan".
341 Введён четвертый выходной аргумент <literal>nb</literal>.