21da6fa363064268e945f9cf6e76fb4f47810cb3
[scilab.git] / scilab / modules / elementary_functions / help / ja_JP / matrixoperations / unwrap.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) 2013 - Samuel GOUGEON
5  *
6  * Copyright (C) 2012 - 2016 - Scilab Enterprises
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" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="unwrap" xml:lang="ja">
17     <refnamediv>
18         <refname>unwrap</refname>
19         <refpurpose>
20             Y(x)輪郭またはZ(x,y)面をアンラップする. Y(x)輪郭を展開する
21         </refpurpose>
22     </refnamediv>
23     <refsynopsisdiv>
24         <title>呼び出し手順</title>
25         <synopsis>unwrap() // 例を実行
26             [U, breakPoints] = unwrap(Y)
27             [U, breakPoints] = unwrap(Y, z_jump)
28             [U, cuspPoints]  = unwrap(Y, "unfold")
29             U = unwrap(Z)
30             U = unwrap(Z, z_jump)
31             U = unwrap(Z, z_jump, dir)
32         </synopsis>
33     </refsynopsisdiv>
34     <refsection>
35         <title>引数</title>
36         <variablelist>
37             <varlistentry>
38                 <term>Y</term>
39                 <listitem>
40                     <para>
41                         実数ベクトル: アンラップまたは展開する外形.
42                         暗黙の座標軸Xが等間隔であることを仮定します.
43                     </para>
44                 </listitem>
45             </varlistentry>
46             <varlistentry>
47                 <term>Z</term>
48                 <listitem>
49                     <para>
50                         実数の行列: アンラップする面. 暗黙の座標軸 (X,Y)
51                         は直交軸で等間隔(間隔はXとYで異なることが可能)と仮定されます.
52                     </para>
53                 </listitem>
54             </varlistentry>
55             <varlistentry>
56                 <term>z_jump</term>
57                 <listitem>
58                     <para>
59                         アンラップモードで使用される正のスカラー実数:
60                         アンラップを実行する.不連続点で適用されるジャンプ高さ.
61                         絶対値のみが考慮されます.
62                         実際に適用されるジャンプは各不連続点の
63                         両端をつなぐ傾きの符号を有します.
64                         デフォルト値は, <literal>z_jump = 2*%pi</literal>です.
65                         特別な値  <literal>z_jump = 0</literal> は,
66                         各不連続点の周辺の平均的な傾きに
67                         等しいジャンプを適用し,
68                         外形または面全体に連続的な傾きを回復します.
69                     </para>
70                 </listitem>
71             </varlistentry>
72             <varlistentry>
73                 <term>dir</term>
74                 <listitem>
75                     <para>
76                         "c" | "r" | "" (デフォルト):
77                         アンラップを行う方向.
78                         "c" は列方向にアンラップ, "r" は行方向にアンラップ,
79                         "" は両方向にアンラップします.
80                     </para>
81                 </listitem>
82             </varlistentry>
83             <varlistentry>
84                 <term>"unfold"</term>
85                 <listitem>
86                     <para>
87                         指定した曲線が折り畳まれている場合,アンラップではなく,展開します.
88                     </para>
89                 </listitem>
90             </varlistentry>
91             <varlistentry>
92                 <term>U</term>
93                 <listitem>
94                     <para>
95                         外形または面をアンラップ, または外形を展開します.
96                         <varname>U</varname> は<varname>Y</varname> または
97                         <varname>Z</varname>と同じ大きさとなります.
98                     </para>
99                 </listitem>
100             </varlistentry>
101             <varlistentry>
102                 <term>breakPoints, cuspPoints</term>
103                 <listitem>
104                     <para>
105                         <varname>Y</varname>の点の添字のベクトル.
106                         ただし,ラップ及び折りたたみが検出され,処理されています.
107                     </para>
108                 </listitem>
109             </varlistentry>
110         </variablelist>
111     </refsection>
112     <refsection>
113         <title>説明</title>
114         <para>アンラップ処理</para>
115         <para>
116             <function>unwrap()</function> は,例えば
117             <literal>Y = modulo(X,w)</literal> または
118             <literal>Y = atan(tan(X))</literal>のような
119             周期的で単調な関数により外形またはラップされた面を
120             処理する際に有用です.
121             この関数は,これらの関数の逆関数のように,
122             制限された
123             <literal>w</literal> または <literal>[-%pi/2, %pi/2]</literal>
124             の範囲ではなく,全領域で入力 <literal>X</literal> を復元する
125             目的で使用されます.
126         </para>
127         <para>
128             ラップされた外形のブレークポイントは,
129             点の近傍の両端の傾きがほぼ同じだが(絶対値が)非常に小さく,
130             考慮される点における傾きとは逆となる点として検出されます:
131             この点において, 近傍の傾きを分断し, 逆となるジャンプがあります.
132         </para>
133         <para>
134             この検出方法はラップするものを特定のレベルで考慮する
135             ことを避けます.
136             これにより,後で定数(またはトレンドすらも)を追加された
137             ラップされた外形を処理できるようになります.
138         </para>
139         <para>
140             アンラップ処理は,全ての検出されたジャンプを減らし,
141             (元が連続だったとすると)一部を連続した傾きに回復します.
142             この処理は,各点における外形のその他の面に関する全側面への
143             Y-シフト適用により行われます.
144             Yシフトは,ユーザにより指定されるため,
145             全てのブレークポイントで同じとなる可能性があります.
146             ユーザがYシフトにヌルを指定した場合,
147             <function>unwrap()</function> は,
148             各ブレークポイントに依存して近傍の平均的傾きに
149             等しいジャンプを適用します.
150         </para>
151         <warning>
152             アンラップされた外形は常に定義されますが,
153             一定ではありません.
154         </warning>
155         <para>
156             <varname>dir</varname> が使用されない限り,
157             <function>unwrap()</function> は面の最初の列を
158             アンラップします.
159             これらのデータの各点がその点から始まる各線をアンラップする
160             基準レベルとして使用されます.
161         </para>
162         <para> </para>
163         <para>展開処理</para>
164         <para>
165             キーワード<varname>"unfold"</varname> が使用され,
166             面ではなく外形が指定された場合,
167             外形はラップされているのではなく折り畳まれていると
168             仮定されます.
169         </para>
170         <para>
171             折りたたみ点 -- または "尖点" -- において,
172             外形は連続ですが,その傾きは不連続になります:
173             傾きは絶対値がその両側の点でほぼ等しくなりますが,
174             両側で逆方向になります.
175         </para>
176         <para>
177             折りたたみは例えば<varname>Y= acos(cos(X))</varname>
178             のように非単調周期関数およびその逆関数が
179             外形Xに適用された場合に発生します.
180             YからXを回復するのはラップされた場合と比べてはるかに困難です.
181             実際,
182             外形が準水平切片の一つの上に接線方向に折り畳まれた場合のように,
183             あいまいな状況が存在する可能性があります.
184         </para>
185         <para>
186             尖点を検出した場合,
187             a) そこから始まる外形の片側が逆方向(反対)となり,
188             かつ,
189             b) 外形と傾きの連続性が保持され,考慮する点
190             (局所的な傾きに基づく小さなジャンプを付加する必要が
191             あるかもしれません)で回復されます.
192         </para>
193         <warning>
194             入力される外形の左端の傾きが最初の基準として
195             使用されます.展開された外形は元の本当の外形に
196             対して上下逆となる可能性があります.
197             加えて,アンラップする場合,定義はされますが
198             一定となります.
199         </warning>
200         <para>既知の制限: 現在, 折り畳まれている面は処理できません.</para>
201     </refsection>
202     <refsection>
203         <title>例</title>
204         <para>1次元の外形をアンラップまたは展開:</para>
205         <programlisting role="example"><![CDATA[
206 // 1次元の例
207 // -----------
208 f = scf();
209 f.figure_size = [800 1000];
210 f.figure_position(2) = 0;
211 f.figure_name = "unwrap() & ""unfold""" + _(": 1-D examples ");
212 ax = gda();
213 ax.y_label.font_size=2;
214 drawlater()
215 // 元の1次元の外形
216 t = linspace(-4,4.2,800);
217 alpha = t.^2 + t -1;
218 subplot(5,2,1)
219 titlepage("unwrap(): unwrap | unfold")
220 subplot(5,2,2)
221 plot(t,alpha)
222 t2 = "$\text{Original profile: } \alpha=t^2+t-1$";
223 ax = gca();
224 ax.tight_limits = "on";
225 yT = max(alpha) - strange(alpha)*0.1;
226 xstring(0,yT,t2)
227 e = gce();
228 e.text_box_mode = "centered";
229 e.font_size = 2;
230 // 複数の例をループ
231 for i=1:4
232     subplot(5,2,2*i+1)
233     if i==1 then
234         // atan(tan())でアンラップ
235         ralpha = atan(tan(alpha));            // 回復したalpha [pi]
236         ylabel("$atan(tan(\alpha))$")
237         [u, K] = unwrap(ralpha, %pi);         // arctan
238         t2 = "$\text{unwrap(Y, \%pi)}$";
239     elseif i==2
240         // modulo() + Y-シフトでアンラップ
241         c = (rand(1,1)-0.5)*4;
242         ralpha = pmodulo(alpha, 5) + c;
243         ylabel("$modulo(\alpha,\ 5)"+msprintf("%+5.2f",c)+"$")
244         [u, K] = unwrap(ralpha, 0);
245         t2 = "$\text{unwrap(Y, 0)}$";
246     elseif i==3
247         // asin(sin()) + Y-シフトで展開
248         ralpha = 1+asin(sin(alpha));          // 回復したalpha [2.pi]
249         ylabel("$1+asin(sin(\alpha))$")
250         [u, K] = unwrap(ralpha, "unfold");
251         t2 = "$\text{unwrap(Y,""unfold"")}$";
252     else
253         // acos(cos()) + トレンド で折りたたみ
254         ralpha = 1+alpha/10+acos(cos(alpha)); // 回復したalpha [2.pi]
255         ylabel("$1+\frac{\alpha}{10}+acos(cos(\alpha))$")
256         [u, K] = unwrap(ralpha, "unfold");
257         t2 = "$\text{unwrap(Y,""unfold"")}$";
258     end
259     // 処理する外形をプロット
260     plot(t, ralpha)
261     // 曲線の不連続点または尖点に星印を付けます:
262     if K~=[] then
263         plot(t(K), ralpha(K),"*")
264     end
265     // 処理(展開またはアンラップ)した外形をプロットします:
266     subplot(5,2,2*i+2)
267     plot(t,u)
268     ax = gca();
269     ax.tight_limits = "on";
270     // Adding a legend:
271     yT = max(u) - strange(u)*0.2;
272     xstring(0,yT,t2)
273     e = gce();
274     e.text_box_mode = "centered";
275     e.font_size = 2;
276 end
277 sda();
278 drawnow()
279         ]]></programlisting>
280         <scilab:image>
281             %_unwrap()
282         </scilab:image>
283         <para>2次元面をアンラップ:</para>
284         <programlisting role="example"><![CDATA[
285 // 2次元の例
286 // -------
287 ax = gda();
288 ax.title.font_size = 2;
289 f = scf();
290 f.color_map = hotcolormap(100);
291 f.axes_size = [900 450];
292 f.figure_position(2) = 0;
293 f.figure_name = "unwrap()" + _(": 2-D examples");
294 drawlater()
295
296 nx = 300;
297 ny = 400;
298 rmax = 8.8;
299 x = linspace(-rmax/2, rmax/2, nx)-1;
300 y = linspace(-rmax/2, rmax/2, ny)+1;
301 [X, Y] = meshgrid(x,y);
302 for ex=0:1   // 例
303     // 元の面
304         // 面を生成
305     if ex==0 then
306         z = X.^2 + Y.^2;
307     else
308         z = sqrt(0.3+sinc(sqrt(z)*3))*17-7;
309     end
310
311     // 3次元でプロットします
312     subplot(2,4,1+4*ex)
313     surf(x, y, z)
314     title("Original profile Z")
315     e = gce();
316     e.thickness = 0; // メッシュを削除
317     e.parent.tight_limits = "on";
318
319     // ラップされた面 (平面)
320     m = 2.8;
321     zw = pmodulo(z, m); // ラップする
322     subplot(2,4,2+4*ex)
323     grayplot(x, y, zw')
324     title(msprintf("Zw = pmodulo(Z, %g)  (flat)",m))
325     ax0 = gca();
326     ax0.tight_limits = "on";
327
328     // アンラップされた面 (平面):
329     // in both directions:
330     u = unwrap(zw, 0);
331     subplot(2,4,3+4*ex)
332     grayplot(x, y, u')
333     title(msprintf("unwrap(Zw, %g)  (flat)", 0))
334     ax3 = gca();
335     ax3.tight_limits = "on";
336
337     if ex==0 then
338         direc = "r";
339     else
340         direc = "c";
341     end
342     // 一方向にアンラップ:
343     u = unwrap(zw, m, direc);
344     subplot(2,4,4+4*ex)
345     grayplot(x, y, u')
346     title(msprintf("unwrap(Zw, %g, ""%s"")  (flat)",m,direc))
347     ax1 = gca();
348     ax1.tight_limits = "on";
349 end
350 sda();
351 drawnow()
352         ]]></programlisting>
353         <para/>
354         <inlinemediaobject>
355             <imageobject>
356                 <imagedata fileref="../../../../helptools/images/unwrap_2D.png"/>
357             </imageobject>
358         </inlinemediaobject>
359     </refsection>
360     <refsection role="see also">
361         <title>参照</title>
362         <simplelist type="inline">
363             <member>
364                 <link linkend="atan">atan</link>
365             </member>
366             <member>
367                 <link linkend="modulo">modulo</link>
368             </member>
369         </simplelist>
370     </refsection>
371     <refsection role="bibliography">
372         <title>参考文献</title>
373         <para>
374             <ulink url="http://siptoolbox.sourceforge.net/doc/sip-0.7.0-reference/unwrapl.html">SIP toolbox: unwrap linear</ulink>
375         </para>
376         <para>
377             <ulink url="http://siptoolbox.sourceforge.net/doc/sip-0.7.0-reference/unwrapp.html">SIP toolbox: unwrap along path</ulink>
378         </para>
379     </refsection>
380     <refsection role="history tag">
381         <title>履歴</title>
382         <revhistory>
383             <revision>
384                 <revnumber>5.5.0</revnumber>
385                 <revdescription>unwrap() 関数が導入されました</revdescription>
386             </revision>
387         </revhistory>
388     </refsection>
389 </refentry>