a995870400329dea607a2e2f2f5208ced2f10fd7
[scilab.git] / scilab / modules / elementary_functions / help / ru_RU / setoperations / unique.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) 2017 - 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="unique" xml:lang="ru">
20     <refnamediv>
21         <refname>unique</refname>
22         <refpurpose>удалить все повторяющиеся компоненты из вектора или матрицы</refpurpose>
23     </refnamediv>
24     <refsynopsisdiv>
25         <title>Синтаксис</title>
26         <synopsis>
27             [N, k, nb] = unique(M)
28             [N, k, nb] = unique(M, orient)
29             [N, k, nb] = unique(.., "keepOrder")
30             [N, k, nb] = unique(.., "uniqueNan")
31         </synopsis>
32     </refsynopsisdiv>
33     <refsection role="parameters">
34         <title>Аргументы</title>
35         <variablelist>
36             <varlistentry>
37                 <term>M</term>
38                 <listitem>
39                     <para>вектор или матрица чисел или строк</para>
40                 </listitem>
41             </varlistentry>
42             <varlistentry>
43                 <term>orient</term>
44                 <listitem>
45                     <para>флаг с возможными значениями: 1 или "r", 2 или "c".
46                         Не может использоваться, если <varname>M</varname> является гиперматрицей.
47                     </para>
48                 </listitem>
49             </varlistentry>
50             <varlistentry>
51                 <term>N</term>
52                 <listitem>
53                     <para>
54                       <itemizedlist>
55                         <listitem>
56                             <para>
57                               Если <varname>orient</varname> не используется: вектор извлечённых
58                               <varname>M</varname> компонентов, сортированных в полядке возрастания.
59                               Если <varname>M</varname> является вектором-строкой, то <varname>N</varname>
60                               так же является вектором-строкой. В случаях всех иных <varname>M</varname>
61                               <varname>N</varname> является матрицей или вектором-столбцом.
62                             </para>
63                         </listitem>
64                         <listitem>
65                           Если <varname>orient</varname> используется: матрица извлечённых
66                           <varname>M</varname> строк или столбцов, сортированных в лексикографическом
67                           порядке возрастания.
68                         </listitem>
69                       </itemizedlist>
70                     </para>
71                 </listitem>
72             </varlistentry>
73             <varlistentry>
74                 <term>k</term>
75                 <listitem>
76                     <para>
77                       Вектор индексов первых встреченных значений, таких что
78                       <literal>N(i) = M(k(i))</literal> или <literal>N(i,:) = M(k(i),:)</literal>
79                       или <literal>N(:,i) = M(:,k(i))</literal>.
80                     </para>
81                     <para>
82                         <varname>k</varname> является строкой, если <varname>M</varname> является
83                         строкой или если используется <literal>orient="c"</literal>. В проитвном случае
84                         это столбец.
85                     </para>
86                 </listitem>
87             </varlistentry>
88             <varlistentry>
89                 <term>nb</term>
90                 <listitem>
91                     <para>
92                       Вектор целых чисел > 0 той же формы, что и <varname>k</varname>:
93                       количество случаев <varname>M</varname> соответствующих непродублированных элементов
94                       (компоентов, строк, столбцов) возвращаемых в <varname>N</varname>.
95                     </para>
96                 </listitem>
97             </varlistentry>
98         </variablelist>
99     </refsection>
100     <refsection role="description">
101         <title>Описание</title>
102         <para>
103             <literal>unique(M)</literal> возвращает вектор, который содержит уникальные элементы
104             <literal>M</literal> в порядке возрастания.
105         </para>
106         <para>
107             <literal>unique(M,"r")</literal> или <literal>unique(M,1)</literal> возвращает
108             уникальные строки <literal>M</literal> в лексикографическом порядке возрастания.
109         </para>
110         <para>
111             <literal>unique(M,"c")</literal> или <literal>unique(M,2)</literal> возвращает
112             уникальные столбцы <literal>M</literal> в лексикографическом порядке возрастания.
113         </para>
114         <para>
115             <literal>unique(M,.. "keepOrder")</literal> возвращает <varname>M</varname> недублированных
116             входов в их исходном порядке в <varname>M</varname>.  <literal>"keepOrder"</literal> нечувствителен
117             к регистру.
118         </para>
119         <para>
120             <literal>unique(M,.. "uniqueNan")</literal> принимает все значения Nan одинаковыми и не дублирует их.
121             По умолчанию любой Nan отличается от другого Nan включая себя самого: <literal>%nan&lt;>%nan</literal>
122             равен истине, пока не будет использоваться <literal>"uniqueNan"</literal>. Определение
123             <literal>"uniqueNan"</literal> нечувствительно к регистру.
124         </para>
125     </refsection>
126     <refsection role="examples">
127         <title>Примеры</title>
128         <para>С некотороми числами:</para>
129         <programlisting role="example"><![CDATA[
130 M = int8([2  0  2  2  1  1  1  2  1  1  0  1  1  0  1  1
131           0  1  2  0  1  2  2  0  1  1  2  0  1  0  0  0
132           ])
133 [u, k] = unique(M)
134 [uc, kc] = unique(M, "c")
135
136 // Получим недублированные столбцы в исходном порядке:
137 M(:, gsort(kc,"g","i"))
138  ]]></programlisting>
139     <screen><![CDATA[
140 --> M
141  M =
142   2  0  2  2  1  1  1  2  1  1  0  1  1  0  1  1
143   0  1  2  0  1  2  2  0  1  1  2  0  1  0  0  0
144
145 --> [u, k] = unique(M)
146  u  =
147   0
148   1
149   2
150
151  k  =
152    2.
153    4.
154    1.
155
156 --> [uc, kc] = unique(M, "c")
157  uc  =
158   0  0  0  1  1  1  2  2
159   0  1  2  0  1  2  0  2
160
161  kc  =
162    14.   2.   11.   12.   5.   6.   1.   3.
163
164 --> // Получим недублированные столбцы в исходном порядке:
165 --> M(:, gsort(kc,"g","i"))
166  ans  =
167   2  0  2  1  1  0  1  0
168   0  1  2  1  2  2  0  0
169 ]]></screen>
170         <para>С комплексными числами:</para>
171         <programlisting role="example"><![CDATA[
172 i = %i;
173 c = [1+i, 1-i, -i, i, -i, 1+i]
174 [u, k] = unique(c)
175 [uc, kc] = unique(c, "c")
176  ]]></programlisting>
177     <screen><![CDATA[
178 --> c = [1+i, 1-i, -i, i, -i, 1+i]
179  c  =
180    1. + i     1. - i  -i    i   -i    1. + i
181
182 --> [u, k] = unique(c)
183  u  =
184   -i    i    1. - i   1. + i
185
186  k  =
187    3.   4.   2.   1.
188 ]]></screen>
189
190     <para>С текстом:</para>
191         <programlisting role="example"><![CDATA[
192 t = ["BA" "BB" "AB" "BA" "AB" "BA" "AB" "AB" "BA" "AA" "AB" "BA" "BA" "BA" "AA"
193      "AA" "AB" "AA" "AA" "BB" "BB" "BB" "BA" "AB" "AB" "BB" "BB" "AB" "AB" "AA"
194     ]
195 u = unique(t)'
196 [u, k, nb] = unique(t(1,:))
197 [u, k] = unique(t(1,:), "keepOrder")  // сохранение исходного порядка элементов строки №1
198 [uc, kc, nb] = unique(t, "c")
199 [uc, kc, nb] = unique(t, "c", "keepOrder")  // сохранение исходного порядка столбцов
200  ]]></programlisting>
201     <screen><![CDATA[
202 --> t = ["BA" "BB" "AB" "BA" "AB" "BA" "AB" "AB" "BA" "AA" "AB" "BA" "BA" "BA" "AA"
203   >      "AA" "AB" "AA" "AA" "BB" "BB" "BB" "BA" "AB" "AB" "BB" "BB" "AB" "AB" "AA"
204   >     ]
205  t  =
206 !BA  BB  AB  BA  AB  BA  AB  AB  BA  AA  AB  BA  BA  BA  AA  !
207 !AA  AB  AA  AA  BB  BB  BB  BA  AB  AB  BB  BB  AB  AB  AA  !
208
209 --> u = unique(t)'
210  u  =
211 !AA  AB  BA  BB  !
212
213 --> [u, k, nb] = unique(t(1,:))
214  u  =
215 !AA  AB  BA  BB  !
216
217  k  =
218    10.   3.   1.   2.
219
220  nb  =
221    2.   5.   7.   1.
222
223 --> [u, k] = unique(t(1,:), "keepOrder")  // сохранение исходного порядка
224  u  =
225 !BA  BB  AB  AA  !
226
227  k  =
228    1.   2.   3.   10.
229
230 --> [uc, kc, nb] = unique(t, "c")
231  nb  =
232    1.   1.   1.   1.   3.   2.   3.   2.   1.
233
234  kc  =
235    15.   10.   3.   8.   5.   1.   9.   6.   2.
236
237  uc  =
238 !AA  AA  AB  AB  AB  BA  BA  BA  BB  !             сортированные столбцы
239 !AA  AB  AA  BA  BB  AA  AB  BB  AB  !
240
241 --> [uc, kc, nb] = unique(t, "c", "keepOrder")  // сохранение исходного порядка
242  uc  =
243 !BA  BB  AB  AB  BA  AB  BA  AA  AA  !
244 !AA  AB  AA  BB  BB  BA  AB  AB  AA  !
245
246  kc  =
247    1.   2.   3.   5.   6.   8.   9.   10.   15.
248
249  nb  =
250    2.   1.   1.   3.   2.   1.   3.   1.   1.
251 ]]></screen>
252         <para/>
253         <para>Со значениями Nan (и Inf). Опция "uniqueNan":</para>
254         <programlisting role="example"><![CDATA[
255 M = [2  2  %nan  1     2  0     1  %nan  0    %nan
256      1  0  1     %nan  0  %inf  0  1     %inf 1
257     ];
258 [v,k,n] = unique(M); v',n'
259 [v,k,n] = unique(M, "uniqueNan"); v',n'
260 unique(M, "c")
261 [v, k, n] = unique(M, "c", "uniqueNan")
262  ]]></programlisting>
263     <screen><![CDATA[
264 --> M
265  M  =
266    2.   2.   Nan   1.    2.   0.    1.   Nan   0.    Nan
267    1.   0.   1.    Nan   0.   Inf   0.   1.    Inf   1.
268
269 --> [v,k,n] = unique(M); v',n'
270  ans  =
271    0.   1.   2.   Inf   Nan   Nan   Nan   Nan
272
273  ans  =
274    5.   6.   3.   2.   1.   1.   1.   1.
275
276 --> [v,k,n] = unique(M, "uniqueNan"); v',n'
277  ans  =
278    0.   1.   2.   Inf   Nan
279
280  ans  =
281    5.   6.   3.   2.   4.
282
283 --> unique(M, "c")
284  ans  =
285    0.    1.   1.    2.   2.   Nan   Nan   Nan
286    Inf   0.   Nan   0.   1.   1.    1.    1.
287
288 --> [v, k, n] = unique(M, "c", "uniqueNan")
289  v  =
290    0.    1.   1.    2.   2.   Nan
291    Inf   0.   Nan   0.   1.   1.
292
293  k  =
294    6.   7.   4.   2.   1.   3.
295
296  n  =
297    2.   1.   1.   2.   1.   3.
298 ]]></screen>
299     </refsection>
300     <refsection role="see also">
301         <title>Смотрите также</title>
302         <simplelist type="inline">
303             <member>
304                 <link linkend="members">members</link>
305             </member>
306             <member>
307                 <link linkend="gsort">gsort</link>
308             </member>
309             <member>
310                 <link linkend="vectorfind">vectorfind</link>
311             </member>
312             <member>
313                 <link linkend="grep">grep</link>
314             </member>
315             <member>
316                 <link linkend="union">union</link>
317             </member>
318             <member>
319                 <link linkend="intersect">intersect</link>
320             </member>
321         </simplelist>
322     </refsection>
323     <refsection role="history">
324         <title>История</title>
325         <revhistory>
326             <revision>
327                 <revnumber>6.0.2</revnumber>
328                 <revdescription>
329                     unique() теперь может использоваться для удаления дубликатов комплексных чисел.
330                 </revdescription>
331             </revision>
332             <revision>
333                 <revnumber>6.1.0</revnumber>
334                 <revdescription>
335                     <itemizedlist>
336                         <listitem>
337                             Введены опции "keepOrder" и "uniqueNan".
338                         </listitem>
339                         <listitem>
340                             Введён третий выходной аргумент <literal>nb</literal>.
341                         </listitem>
342                     </itemizedlist>
343                 </revdescription>
344             </revision>
345         </revhistory>
346     </refsection>
347 </refentry>