* Bugs 16337 16455 fixed: [..,..,ku] = unique(..) implemented
[scilab.git] / scilab / modules / elementary_functions / help / ja_JP / 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="ja">
20     <refnamediv>
21         <refname>unique</refname>
22         <refpurpose>ベクトルまたは行列のユニークなな要素を展開</refpurpose>
23     </refnamediv>
24     <refsynopsisdiv>
25         <title>呼び出し手順</title>
26         <synopsis>
27             [U, km, ku, nb] = unique(M)
28             [U, km, ku, nb] = unique(M, orient)
29             [U, km, ku, nb] = unique(.., "keepOrder")
30             [U, km, ku, 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>
40                         vector, matrix, or hypermatrix of booleans, numbers, or strings.
41                     </para>
42                 </listitem>
43             </varlistentry>
44             <varlistentry>
45                 <term>orient</term>
46                 <listitem>
47                     <para>フラグで以下の値のどれかとなる : 1 または "r", 2 または "c".
48                         It can't be used if <varname>M</varname> is an hypermatrix.
49                     </para>
50                 </listitem>
51             </varlistentry>
52             <varlistentry>
53                 <term>U</term>
54                 <listitem>
55                     <para>
56                       <itemizedlist>
57                         <listitem>
58                             <para>
59                               If <varname>orient</varname> is not used: Vector of extracted
60                               <varname>M</varname> components sorted in ascending order.
61                               If <varname>M</varname> is a row vector, <varname>U</varname> is also
62                               a row vector. In all other <varname>M</varname> cases,
63                               <varname>U</varname> is a column vector.
64                             </para>
65                         </listitem>
66                         <listitem>
67                           If <varname>orient</varname> is used: Matrix of extracted
68                           <varname>M</varname> rows or columns, sorted in lexicographic ascending order.
69                         </listitem>
70                       </itemizedlist>
71                     </para>
72                 </listitem>
73             </varlistentry>
74             <varlistentry>
75                 <term>km</term>
76                 <listitem>
77                     Vector of indices of first encountered occurrences, such that
78                     <literal>U = M(km)</literal> or <literal>U = M(km,:)</literal>
79                     or <literal>U = M(:,km)</literal>.
80                     <para/>
81                     <varname>km</varname> is a row if <varname>M</varname> is a row or if
82                     <literal>orient="c"</literal> is used. Otherwise it's a column.
83                     <para/>
84                 </listitem>
85             </varlistentry>
86             <varlistentry>
87                 <term>ku</term>
88                 <listitem>
89                     Array of indices in U, such that, according to the <varname>orient</varname> option
90                     <itemizedlist>
91                         <listitem>
92                             "*": <varname>ku</varname> is of size size(M), and <literal>U(ku) = M</literal>
93                         </listitem>
94                         <listitem>
95                             "r": <varname>ku</varname> is of size [size(M,1), 1], and <literal>U(ku,:) = M</literal>
96                         </listitem>
97                         <listitem>
98                             "c": <varname>ku</varname> is of size [1, size(M,2)], and <literal>U(:,ku) = M</literal>
99                         </listitem>
100                     </itemizedlist>
101                     <para/>
102                 </listitem>
103             </varlistentry>
104             <varlistentry>
105                 <term>nb</term>
106                 <listitem>
107                     <para>
108                       Vector of integers > 0, with the same <varname>km</varname> shape:
109                       Numbers of occurences in <varname>M</varname> of respective unduplicated
110                       entities (components, rows, columns) returned in <varname>U</varname>.
111                     </para>
112                 </listitem>
113             </varlistentry>
114         </variablelist>
115     </refsection>
116     <refsection role="description">
117         <title>説明</title>
118         <para>
119             <literal>unique(M)</literal> は
120             <literal>M</literal>のユニークなエントリを昇順に
121             したものを保持するベクトルを返します.
122         </para>
123         <para>
124             <literal>unique(M,"r")</literal> または
125             <literal>unique(M,1)</literal>は,
126             <literal>M</literal>のユニークな行を
127             辞書式の昇順にして返します.
128         </para>
129         <para>
130             <literal>unique(M,"c")</literal> または
131             <literal>unique(M,2)</literal>は
132             <literal>M</literal>のユニークな列を
133             辞書式の昇順にして返します.
134         </para>
135         <para>
136             <literal>unique(M,.. "keepOrder")</literal> returns <varname>M</varname> unduplicated
137             entries in their original order in <varname>M</varname>.
138             <literal>"keepOrder"</literal> is case-insensitive.
139         </para>
140         <para>
141             <literal>unique(M,.. "uniqueNan")</literal> considers all Nan values as the same one,
142             and unduplicates them. By default, any Nan is different
143             from any other Nan, including itself: <literal>%nan&lt;>%nan</literal> is true, unless
144             <literal>"uniqueNan"</literal> is used. Specifying
145             <literal>"uniqueNan"</literal> is case-insensitive.
146         </para>
147         <para>
148             For booleans, <literal>unique(…)</literal> is useful mainly with the "r" or "c" options.
149         </para>
150         <para>
151             <note>
152                 Complex numbers are sorted first by increasing magnitudes, then by increasing
153                 phases on [-π,π].
154             </note>
155         </para>
156     </refsection>
157     <refsection role="examples">
158         <title>例</title>
159         <para>With some numbers:</para>
160         <programlisting role="example"><![CDATA[
161 M = int8([2  0  2  2  1  1  1  2  1  1  0  1  1  0  1  1
162           0  1  2  0  1  2  2  0  1  1  2  0  1  0  0  0
163           ])
164 [u, km] = unique(M)
165 [uc, kmc] = unique(M, "c")
166  ]]></programlisting>
167     <screen><![CDATA[
168 --> M
169  M =
170   2  0  2  2  1  1  1  2  1  1  0  1  1  0  1  1
171   0  1  2  0  1  2  2  0  1  1  2  0  1  0  0  0
172
173 --> [u, km] = unique(M)
174  u  =
175   0
176   1
177   2
178
179  km  =
180    2.
181    4.
182    1.
183
184 --> [uc, kmc] = unique(M, "c")
185  uc  =
186   0  0  0  1  1  1  2  2
187   0  1  2  0  1  2  0  2
188
189  kmc  =
190    14.   2.   11.   12.   5.   6.   1.   3.
191 ]]></screen>
192         <para>With complex numbers:</para>
193         <programlisting role="example"><![CDATA[
194 i = %i;
195 c = [1+i, 1-i, -i, i, -i, 1+i]
196 [u, k] = unique(c)
197 [uc, kc] = unique(c, "c")
198  ]]></programlisting>
199     <screen><![CDATA[
200 --> c = [1+i, 1-i, -i, i, -i, 1+i]
201  c  =
202    1. + i    1. - i    0. - i    0. + i    0. - i    1. + i
203
204 --> [u, k] = unique(c)
205  u  =
206    0. - i    0. + i    1. - i    1. + i
207  k  =
208    3.   4.   2.   1.
209
210 --> [uc, kc] = unique(c, "c")
211  uc  =
212    0. - i    0. + i    1. - i    1. + i
213  kc  =
214    3.   4.   2.   1.
215 ]]></screen>
216
217     <para>With some texts:</para>
218         <programlisting role="example"><![CDATA[
219 t = ["BA" "BB" "AB" "BA" "AB" "BA" "AB" "AB" "BA" "AA" "AB" "BA" "BA" "BA" "AA"
220      "AA" "AB" "AA" "AA" "BB" "BB" "BB" "BA" "AB" "AB" "BB" "BB" "AB" "AB" "AA"
221     ]
222 u = unique(t)'
223 [u, kt, nb] = unique(t(1,:))
224 [u, kt] = unique(t(1,:), "keepOrder")      // In original order of row#1 elements
225 [uc, ktc, kuc, nb] = unique(t, "c")
226 [uc, ktc, kuc, nb] = unique(t, "c", "keepOrder")  // In original order of columns
227 [and(t(:,ktc)==uc), and(uc(:,kuc)==t) ]
228  ]]></programlisting>
229     <screen><![CDATA[
230 --> t = ["BA" "BB" "AB" "BA" "AB" "BA" "AB" "AB" "BA" "AA" "AB" "BA" "BA" "BA" "AA"
231   >      "AA" "AB" "AA" "AA" "BB" "BB" "BB" "BA" "AB" "AB" "BB" "BB" "AB" "AB" "AA"
232   >     ]
233  t  =
234 !BA  BB  AB  BA  AB  BA  AB  AB  BA  AA  AB  BA  BA  BA  AA  !
235 !AA  AB  AA  AA  BB  BB  BB  BA  AB  AB  BB  BB  AB  AB  AA  !
236
237 --> u = unique(t)'
238  u  =
239 !AA  AB  BA  BB  !
240
241 --> [u, kt, ku, nb] = unique(t(1,:))
242  u  =
243 !AA  AB  BA  BB  !
244
245  kt  =
246    10.   3.   1.   2.
247
248  nb  =
249    2.   5.   7.   1.
250
251 --> [u, kt] = unique(t(1,:), "keepOrder")  // Keeping the original order
252  u  =
253 !BA  BB  AB  AA  !
254
255  kt  =
256    1.   2.   3.   10.
257
258 --> [uc, ktc, kuc, nb] = unique(t, "c")
259  uc  =
260 !AA  AA  AB  AB  AB  BA  BA  BA  BB  !             Sorted columns
261 !AA  AB  AA  BA  BB  AA  AB  BB  AB  !
262
263  ktc  =
264    15.   10.   3.   8.   5.   1.   9.   6.   2.
265
266  nb  =
267    1.   1.   1.   1.   3.   2.   3.   2.   1.
268
269 --> [uc, kc, nb] = unique(t, "c", "keepOrder")  // Keeping the original order
270  uc  =
271 !BA  BB  AB  AB  BA  AB  BA  AA  AA  !
272 !AA  AB  AA  BB  BB  BA  AB  AB  AA  !
273
274  kc  =
275    1.   2.   3.   5.   6.   8.   9.   10.   15.
276
277  nb  =
278    2.   1.   1.   3.   2.   1.   3.   1.   1.
279
280 --> [and(t(:,ktc)==uc), and(uc(:,kuc)==t) ]
281  ans  =
282   T  T
283 ]]></screen>
284         <para/>
285         <para>With Nan (and Inf) values. "uniqueNan" option:</para>
286         <programlisting role="example"><![CDATA[
287 M = [2  2  %nan  1     2  0     1  %nan  0    %nan
288      1  0  1     %nan  0  %inf  0  1     %inf 1
289     ];
290 [v, km, kv, n] = unique(M); v',n'
291 [v, km, kv, n] = unique(M, "uniqueNan"); v',n'
292 unique(M, "c")
293 [v, kmc, kvc, n] = unique(M, "c", "uniqueNan")
294  ]]></programlisting>
295     <screen><![CDATA[
296 --> M
297  M  =
298    2.   2.   Nan   1.    2.   0.    1.   Nan   0.    Nan
299    1.   0.   1.    Nan   0.   Inf   0.   1.    Inf   1.
300
301 --> [v, km, kv, n] = unique(M); v',n'
302  ans  =
303    0.   1.   2.   Inf   Nan   Nan   Nan   Nan
304
305  ans  =
306    5.   6.   3.   2.   1.   1.   1.   1.
307
308 --> [v, km, kv, n] = unique(M, "uniqueNan"); v',n'
309  ans  =
310    0.   1.   2.   Inf   Nan
311
312  ans  =
313    5.   6.   3.   2.   4.
314
315 --> unique(M, "c")
316  ans  =
317    0.    1.   1.    2.   2.   Nan   Nan   Nan
318    Inf   0.   Nan   0.   1.   1.    1.    1.
319
320 --> [v, kmc, kvc, n] = unique(M, "c", "uniqueNan")
321  v  =
322    0.    1.   1.    2.   2.   Nan
323    Inf   0.   Nan   0.   1.   1.
324
325  kmc  =
326    6.   7.   4.   2.   1.   3.
327
328  n  =
329    2.   1.   1.   2.   1.   3.
330 ]]></screen>
331     </refsection>
332     <refsection role="see also">
333         <title>参照</title>
334         <simplelist type="inline">
335             <member>
336                 <link linkend="members">members</link>
337             </member>
338             <member>
339                 <link linkend="gsort">gsort</link>
340             </member>
341             <member>
342                 <link linkend="vectorfind">vectorfind</link>
343             </member>
344             <member>
345                 <link linkend="grep">grep</link>
346             </member>
347             <member>
348                 <link linkend="union">union</link>
349             </member>
350             <member>
351                 <link linkend="intersect">intersect</link>
352             </member>
353         </simplelist>
354     </refsection>
355     <refsection role="history">
356         <title>履歴</title>
357         <revhistory>
358             <revision>
359                 <revnumber>6.0.2</revnumber>
360                 <revdescription>
361                     unique() can now be used to unduplicate complex numbers.
362                 </revdescription>
363             </revision>
364             <revision>
365                 <revnumber>6.1.0</revnumber>
366                 <revdescription>
367                     <itemizedlist>
368                         <listitem>
369                             Extension to booleans.
370                         </listitem>
371                         <listitem>
372                             "keepOrder" and "uniqueNan" options introduced.
373                         </listitem>
374                         <listitem>
375                             Fourth output argument <literal>nb</literal> introduced.
376                         </listitem>
377                     </itemizedlist>
378                 </revdescription>
379             </revision>
380             <revision>
381                 <revnumber>6.1.1</revnumber>
382                 <revdescription>
383                     ku 3rd output implemented.
384                 </revdescription>
385             </revision>
386         </revhistory>
387     </refsection>
388 </refentry>