b5a0dc0ab3069b0d1d5a7789ce96df6b2667a83e
[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, 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")
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>kn</term>
90                 <listitem>
91                     Not yet implemented.
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>.
95                     <para/>
96                 </listitem>
97             </varlistentry>
98             <varlistentry>
99                 <term>nb</term>
100                 <listitem>
101                     <para>
102                       Вектор целых чисел > 0 той же формы, что и <varname>k</varname>:
103                       количество случаев <varname>M</varname> соответствующих непродублированных элементов
104                       (компоентов, строк, столбцов) возвращаемых в <varname>N</varname>.
105                     </para>
106                 </listitem>
107             </varlistentry>
108         </variablelist>
109     </refsection>
110     <refsection role="description">
111         <title>Описание</title>
112         <para>
113             <literal>unique(M)</literal> возвращает вектор, который содержит уникальные элементы
114             <literal>M</literal> в порядке возрастания.
115         </para>
116         <para>
117             <literal>unique(M,"r")</literal> или <literal>unique(M,1)</literal> возвращает
118             уникальные строки <literal>M</literal> в лексикографическом порядке возрастания.
119         </para>
120         <para>
121             <literal>unique(M,"c")</literal> или <literal>unique(M,2)</literal> возвращает
122             уникальные столбцы <literal>M</literal> в лексикографическом порядке возрастания.
123         </para>
124         <para>
125             <literal>unique(M,.. "keepOrder")</literal> возвращает <varname>M</varname> недублированных
126             входов в их исходном порядке в <varname>M</varname>.  <literal>"keepOrder"</literal> нечувствителен
127             к регистру.
128         </para>
129         <para>
130             <literal>unique(M,.. "uniqueNan")</literal> принимает все значения Nan одинаковыми и не дублирует их.
131             По умолчанию любой Nan отличается от другого Nan включая себя самого: <literal>%nan&lt;>%nan</literal>
132             равен истине, пока не будет использоваться <literal>"uniqueNan"</literal>. Определение
133             <literal>"uniqueNan"</literal> нечувствительно к регистру.
134         </para>
135     </refsection>
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
142           ])
143 [u, km] = unique(M)
144 [uc, kmc] = unique(M, "c")
145  ]]></programlisting>
146     <screen><![CDATA[
147 --> M
148  M =
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
151
152 --> [u, km] = unique(M)
153  u  =
154   0
155   1
156   2
157
158  km  =
159    2.
160    4.
161    1.
162
163 --> [uc, kmc] = unique(M, "c")
164  uc  =
165   0  0  0  1  1  1  2  2
166   0  1  2  0  1  2  0  2
167
168  kmc  =
169    14.   2.   11.   12.   5.   6.   1.   3.
170 ]]></screen>
171         <para>С комплексными числами:</para>
172         <programlisting role="example"><![CDATA[
173 i = %i;
174 c = [1+i, 1-i, -i, i, -i, 1+i]
175 [u, k] = unique(c)
176 [uc, kc] = unique(c, "c")
177  ]]></programlisting>
178     <screen><![CDATA[
179 --> c = [1+i, 1-i, -i, i, -i, 1+i]
180  c  =
181    1. + i     1. - i  -i    i   -i    1. + i
182
183 --> [u, k] = unique(c)
184  u  =
185   -i    i    1. - i   1. + i
186
187  k  =
188    3.   4.   2.   1.
189 ]]></screen>
190
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"
195     ]
196 u = unique(t)'
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")  // сохранение исходного порядка столбцов
201  ]]></programlisting>
202     <screen><![CDATA[
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"
205   >     ]
206  t  =
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  !
209
210 --> u = unique(t)'
211  u  =
212 !AA  AB  BA  BB  !
213
214 --> [u, kt, ku, nb] = unique(t(1,:))
215  u  =
216 !AA  AB  BA  BB  !
217
218  kt  =
219    10.   3.   1.   2.
220
221  nb  =
222    2.   5.   7.   1.
223
224 --> [u, kt] = unique(t(1,:), "keepOrder")  // сохранение исходного порядка
225  u  =
226 !BA  BB  AB  AA  !
227
228  kt  =
229    1.   2.   3.   10.
230
231 --> [uc, ktc, kuc, nb] = unique(t, "c")
232  uc  =
233 !AA  AA  AB  AB  AB  BA  BA  BA  BB  !             сортированные столбцы
234 !AA  AB  AA  BA  BB  AA  AB  BB  AB  !
235
236  ktc  =
237    15.   10.   3.   8.   5.   1.   9.   6.   2.
238
239  nb  =
240    1.   1.   1.   1.   3.   2.   3.   2.   1.
241
242 --> [uc, ktc, kuc, nb] = unique(t, "c", "keepOrder")  // сохранение исходного порядка
243  uc  =
244 !BA  BB  AB  AB  BA  AB  BA  AA  AA  !
245 !AA  AB  AA  BB  BB  BA  AB  AB  AA  !
246
247  ktc  =
248    1.   2.   3.   5.   6.   8.   9.   10.   15.
249
250  nb  =
251    2.   1.   1.   3.   2.   1.   3.   1.   1.
252 ]]></screen>
253         <para/>
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
258     ];
259 [v, km, kv, n] = unique(M); v',n'
260 [v, km, kv, n] = unique(M, "uniqueNan"); v',n'
261 unique(M, "c")
262 [v, kmc, kvc, n] = unique(M, "c", "uniqueNan")
263  ]]></programlisting>
264     <screen><![CDATA[
265 --> M
266  M  =
267    2.   2.   Nan   1.    2.   0.    1.   Nan   0.    Nan
268    1.   0.   1.    Nan   0.   Inf   0.   1.    Inf   1.
269
270 --> [v, km, kv, n] = unique(M); v',n'
271  ans  =
272    0.   1.   2.   Inf   Nan   Nan   Nan   Nan
273
274  ans  =
275    5.   6.   3.   2.   1.   1.   1.   1.
276
277 --> [v, km, kv, n] = unique(M, "uniqueNan"); v',n'
278  ans  =
279    0.   1.   2.   Inf   Nan
280
281  ans  =
282    5.   6.   3.   2.   4.
283
284 --> unique(M, "c")
285  ans  =
286    0.    1.   1.    2.   2.   Nan   Nan   Nan
287    Inf   0.   Nan   0.   1.   1.    1.    1.
288
289 --> [v, kmc, kvc, n] = unique(M, "c", "uniqueNan")
290  v  =
291    0.    1.   1.    2.   2.   Nan
292    Inf   0.   Nan   0.   1.   1.
293
294  kmc  =
295    6.   7.   4.   2.   1.   3.
296
297  n  =
298    2.   1.   1.   2.   1.   3.
299 ]]></screen>
300     </refsection>
301     <refsection role="see also">
302         <title>Смотрите также</title>
303         <simplelist type="inline">
304             <member>
305                 <link linkend="members">members</link>
306             </member>
307             <member>
308                 <link linkend="gsort">gsort</link>
309             </member>
310             <member>
311                 <link linkend="vectorfind">vectorfind</link>
312             </member>
313             <member>
314                 <link linkend="grep">grep</link>
315             </member>
316             <member>
317                 <link linkend="union">union</link>
318             </member>
319             <member>
320                 <link linkend="intersect">intersect</link>
321             </member>
322         </simplelist>
323     </refsection>
324     <refsection role="history">
325         <title>История</title>
326         <revhistory>
327             <revision>
328                 <revnumber>6.0.2</revnumber>
329                 <revdescription>
330                     unique() теперь может использоваться для удаления дубликатов комплексных чисел.
331                 </revdescription>
332             </revision>
333             <revision>
334                 <revnumber>6.1.0</revnumber>
335                 <revdescription>
336                     <itemizedlist>
337                         <listitem>
338                             Введены опции "keepOrder" и "uniqueNan".
339                         </listitem>
340                         <listitem>
341                             Введён четвертый выходной аргумент <literal>nb</literal>.
342                         </listitem>
343                     </itemizedlist>
344                 </revdescription>
345             </revision>
346         </revhistory>
347     </refsection>
348 </refentry>