a8398aca7384bbff1d05692828fd3d4c61a5ef0d
[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             [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                         It can't be used if <varname>M</varname> is an hypermatrix.
47                     </para>
48                 </listitem>
49             </varlistentry>
50             <varlistentry>
51                 <term>N</term>
52                 <listitem>
53                     <para>
54                       <itemizedlist>
55                         <listitem>
56                             <para>
57                               If <varname>orient</varname> is not used: Vector of extracted
58                               <varname>M</varname> components sorted in ascending order.
59                               If <varname>M</varname> is a row vector, <varname>N</varname> is also
60                               a row vector. In all other <varname>M</varname> cases,
61                               <varname>N</varname> is a matrix or a column vector.
62                             </para>
63                         </listitem>
64                         <listitem>
65                           If <varname>orient</varname> is used: Matrix of extracted
66                           <varname>M</varname> rows or columns, sorted in lexicographic ascending order.
67                         </listitem>
68                       </itemizedlist>
69                     </para>
70                 </listitem>
71             </varlistentry>
72             <varlistentry>
73                 <term>k</term>
74                 <listitem>
75                     <para>
76                       Vector of indices of first encountered occurences, such that
77                       <literal>N(i) = M(k(i))</literal> or <literal>N(i,:) = M(k(i),:)</literal>
78                       or <literal>N(:,i) = M(:,k(i))</literal>.
79                     </para>
80                     <para>
81                         <varname>k</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>nb</term>
88                 <listitem>
89                     <para>
90                       Vector of integers > 0, with the same <varname>k</varname> shape:
91                       Numbers of occurences in <varname>M</varname> of respective unduplicated
92                       entities (components, rows, columns) returned in <varname>N</varname>.
93                     </para>
94                 </listitem>
95             </varlistentry>
96         </variablelist>
97     </refsection>
98     <refsection role="description">
99         <title>説明</title>
100         <para>
101             <literal>unique(M)</literal> は
102             <literal>M</literal>のユニークなエントリを昇順に
103             したものを保持するベクトルを返します.
104         </para>
105         <para>
106             <literal>unique(M,"r")</literal> または
107             <literal>unique(M,1)</literal>は,
108             <literal>M</literal>のユニークな行を
109             辞書式の昇順にして返します.
110         </para>
111         <para>
112             <literal>unique(M,"c")</literal> または
113             <literal>unique(M,2)</literal>は
114             <literal>M</literal>のユニークな列を
115             辞書式の昇順にして返します.
116         </para>
117         <para>
118             <literal>unique(M,.. "keepOrder")</literal> returns <varname>M</varname> unduplicated
119             entries in their original order in <varname>M</varname>.
120             <literal>"keepOrder"</literal> is case-insensitive.
121         </para>
122         <para>
123             <literal>unique(M,.. "uniqueNan")</literal> considers all Nan values as the same one,
124             and unduplicates them. By default, any Nan is different
125             from any other Nan, including itself: <literal>%nan&lt;>%nan</literal> is true, unless
126             <literal>"uniqueNan"</literal> is used. Specifying
127             <literal>"uniqueNan"</literal> is case-insensitive.
128         </para>
129     </refsection>
130     <refsection role="examples">
131         <title>例</title>
132         <para>With some numbers:</para>
133         <programlisting role="example"><![CDATA[
134 M = int8([2  0  2  2  1  1  1  2  1  1  0  1  1  0  1  1
135           0  1  2  0  1  2  2  0  1  1  2  0  1  0  0  0
136           ])
137 [u, k] = unique(M)
138 [uc, kc] = unique(M, "c")
139
140 // Get unduplicated columns in initial order:
141 M(:, gsort(kc,"g","i"))
142  ]]></programlisting>
143     <screen><![CDATA[
144 --> M
145  M =
146   2  0  2  2  1  1  1  2  1  1  0  1  1  0  1  1
147   0  1  2  0  1  2  2  0  1  1  2  0  1  0  0  0
148
149 --> [u, k] = unique(M)
150  u  =
151   0
152   1
153   2
154
155  k  =
156    2.
157    4.
158    1.
159
160 --> [uc, kc] = unique(M, "c")
161  uc  =
162   0  0  0  1  1  1  2  2
163   0  1  2  0  1  2  0  2
164
165  kc  =
166    14.   2.   11.   12.   5.   6.   1.   3.
167
168 --> // Get unduplicated columns in initial order:
169 --> M(:, gsort(kc,"g","i"))
170  ans  =
171   2  0  2  1  1  0  1  0
172   0  1  2  1  2  2  0  0
173 ]]></screen>
174         <para>With complex numbers:</para>
175         <programlisting role="example"><![CDATA[
176 i = %i;
177 c = [1+i, 1-i, -i, i, -i, 1+i]
178 [u, k] = unique(c)
179 [uc, kc] = unique(c, "c")
180  ]]></programlisting>
181     <screen><![CDATA[
182 --> c = [1+i, 1-i, -i, i, -i, 1+i]
183  c  =
184    1. + i     1. - i  -i    i   -i    1. + i
185
186 --> [u, k] = unique(c)
187  u  =
188   -i    i    1. - i   1. + i
189
190  k  =
191    3.   4.   2.   1.
192 ]]></screen>
193
194     <para>With some texts:</para>
195         <programlisting role="example"><![CDATA[
196 t = ["BA" "BB" "AB" "BA" "AB" "BA" "AB" "AB" "BA" "AA" "AB" "BA" "BA" "BA" "AA"
197      "AA" "AB" "AA" "AA" "BB" "BB" "BB" "BA" "AB" "AB" "BB" "BB" "AB" "AB" "AA"
198     ]
199 u = unique(t)'
200 [u, k, nb] = unique(t(1,:))
201 [u, k] = unique(t(1,:), "keepOrder")  // Keeping the original order of row#1 elements
202 [uc, kc, nb] = unique(t, "c")
203 [uc, kc, nb] = unique(t, "c", "keepOrder")  // Keeping the original order of columns
204  ]]></programlisting>
205     <screen><![CDATA[
206 --> t = ["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  t  =
210 !BA  BB  AB  BA  AB  BA  AB  AB  BA  AA  AB  BA  BA  BA  AA  !
211 !AA  AB  AA  AA  BB  BB  BB  BA  AB  AB  BB  BB  AB  AB  AA  !
212
213 --> u = unique(t)'
214  u  =
215 !AA  AB  BA  BB  !
216
217 --> [u, k, nb] = unique(t(1,:))
218  u  =
219 !AA  AB  BA  BB  !
220
221  k  =
222    10.   3.   1.   2.
223
224  nb  =
225    2.   5.   7.   1.
226
227 --> [u, k] = unique(t(1,:), "keepOrder")  // Keeping the original order
228  u  =
229 !BA  BB  AB  AA  !
230
231  k  =
232    1.   2.   3.   10.
233
234 --> [uc, kc, nb] = unique(t, "c")
235  nb  =
236    1.   1.   1.   1.   3.   2.   3.   2.   1.
237
238  kc  =
239    15.   10.   3.   8.   5.   1.   9.   6.   2.
240
241  uc  =
242 !AA  AA  AB  AB  AB  BA  BA  BA  BB  !             Sorted columns
243 !AA  AB  AA  BA  BB  AA  AB  BB  AB  !
244
245 --> [uc, kc, nb] = unique(t, "c", "keepOrder")  // Keeping the original order
246  uc  =
247 !BA  BB  AB  AB  BA  AB  BA  AA  AA  !
248 !AA  AB  AA  BB  BB  BA  AB  AB  AA  !
249
250  kc  =
251    1.   2.   3.   5.   6.   8.   9.   10.   15.
252
253  nb  =
254    2.   1.   1.   3.   2.   1.   3.   1.   1.
255 ]]></screen>
256         <para/>
257         <para>With Nan (and Inf) values. "uniqueNan" option:</para>
258         <programlisting role="example"><![CDATA[
259 M = [2  2  %nan  1     2  0     1  %nan  0    %nan
260      1  0  1     %nan  0  %inf  0  1     %inf 1
261     ];
262 [v,k,n] = unique(M); v',n'
263 [v,k,n] = unique(M, "uniqueNan"); v',n'
264 unique(M, "c")
265 [v, k, n] = unique(M, "c", "uniqueNan")
266  ]]></programlisting>
267     <screen><![CDATA[
268 --> M
269  M  =
270    2.   2.   Nan   1.    2.   0.    1.   Nan   0.    Nan
271    1.   0.   1.    Nan   0.   Inf   0.   1.    Inf   1.
272
273 --> [v,k,n] = unique(M); v',n'
274  ans  =
275    0.   1.   2.   Inf   Nan   Nan   Nan   Nan
276
277  ans  =
278    5.   6.   3.   2.   1.   1.   1.   1.
279
280 --> [v,k,n] = unique(M, "uniqueNan"); v',n'
281  ans  =
282    0.   1.   2.   Inf   Nan
283
284  ans  =
285    5.   6.   3.   2.   4.
286
287 --> unique(M, "c")
288  ans  =
289    0.    1.   1.    2.   2.   Nan   Nan   Nan
290    Inf   0.   Nan   0.   1.   1.    1.    1.
291
292 --> [v, k, n] = unique(M, "c", "uniqueNan")
293  v  =
294    0.    1.   1.    2.   2.   Nan
295    Inf   0.   Nan   0.   1.   1.
296
297  k  =
298    6.   7.   4.   2.   1.   3.
299
300  n  =
301    2.   1.   1.   2.   1.   3.
302 ]]></screen>
303     </refsection>
304     <refsection role="see also">
305         <title>参照</title>
306         <simplelist type="inline">
307             <member>
308                 <link linkend="members">members</link>
309             </member>
310             <member>
311                 <link linkend="gsort">gsort</link>
312             </member>
313             <member>
314                 <link linkend="vectorfind">vectorfind</link>
315             </member>
316             <member>
317                 <link linkend="grep">grep</link>
318             </member>
319             <member>
320                 <link linkend="union">union</link>
321             </member>
322             <member>
323                 <link linkend="intersect">intersect</link>
324             </member>
325         </simplelist>
326     </refsection>
327     <refsection role="history">
328         <title>履歴</title>
329         <revhistory>
330             <revision>
331                 <revnumber>6.0.2</revnumber>
332                 <revdescription>
333                     unique() can now be used to unduplicate complex numbers.
334                 </revdescription>
335             </revision>
336             <revision>
337                 <revnumber>6.1.0</revnumber>
338                 <revdescription>
339                     <itemizedlist>
340                         <listitem>
341                             "keepOrder" and "uniqueNan" options introduced.
342                         </listitem>
343                         <listitem>
344                             Third output argument <literal>nb</literal> introduced.
345                         </listitem>
346                     </itemizedlist>
347                 </revdescription>
348             </revision>
349         </revhistory>
350     </refsection>
351 </refentry>