1 <?xml version="1.0" encoding="UTF-8"?>
3 * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
4 * Copyright (C) 2013 - Samuel GOUGEON
6 * Copyright (C) 2012 - 2016 - Scilab Enterprises
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.
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">
18 <refname>unwrap</refname>
20 Y(x)輪郭またはZ(x,y)面をアンラップする. Y(x)輪郭を展開する
25 <synopsis>unwrap() // 例を実行
26 [U, breakPoints] = unwrap(Y)
27 [U, breakPoints] = unwrap(Y, z_jump)
28 [U, cuspPoints] = unwrap(Y, "unfold")
31 U = unwrap(Z, z_jump, dir)
41 実数ベクトル: アンラップまたは展開する外形.
42 暗黙の座標軸Xが等間隔であることを仮定します.
50 実数の行列: アンラップする面. 暗黙の座標軸 (X,Y)
51 は直交軸で等間隔(間隔はXとYで異なることが可能)と仮定されます.
59 アンラップモードで使用される正のスカラー実数:
60 アンラップを実行する.不連続点で適用されるジャンプ高さ.
64 デフォルト値は, <literal>z_jump = 2*%pi</literal>です.
65 特別な値 <literal>z_jump = 0</literal> は,
68 外形または面全体に連続的な傾きを回復します.
76 "c" | "r" | "" (デフォルト):
78 "c" は列方向にアンラップ, "r" は行方向にアンラップ,
87 指定した曲線が折り畳まれている場合,アンラップではなく,展開します.
95 外形または面をアンラップ, または外形を展開します.
96 <varname>U</varname> は<varname>Y</varname> または
97 <varname>Z</varname>と同じ大きさとなります.
102 <term>breakPoints, cuspPoints</term>
105 <varname>Y</varname>の点の添字のベクトル.
106 ただし,ラップ及び折りたたみが検出され,処理されています.
116 <function>unwrap()</function> は,例えば
117 <literal>Y = modulo(X,w)</literal> または
118 <literal>Y = atan(tan(X))</literal>のような
119 周期的で単調な関数により外形またはラップされた面を
121 この関数は,これらの関数の逆関数のように,
123 <literal>w</literal> または <literal>[-%pi/2, %pi/2]</literal>
124 の範囲ではなく,全領域で入力 <literal>X</literal> を復元する
129 点の近傍の両端の傾きがほぼ同じだが(絶対値が)非常に小さく,
130 考慮される点における傾きとは逆となる点として検出されます:
131 この点において, 近傍の傾きを分断し, 逆となるジャンプがあります.
134 この検出方法はラップするものを特定のレベルで考慮する
136 これにより,後で定数(またはトレンドすらも)を追加された
137 ラップされた外形を処理できるようになります.
140 アンラップ処理は,全ての検出されたジャンプを減らし,
141 (元が連続だったとすると)一部を連続した傾きに回復します.
142 この処理は,各点における外形のその他の面に関する全側面への
145 全てのブレークポイントで同じとなる可能性があります.
147 <function>unwrap()</function> は,
148 各ブレークポイントに依存して近傍の平均的傾きに
152 アンラップされた外形は常に定義されますが,
156 <varname>dir</varname> が使用されない限り,
157 <function>unwrap()</function> は面の最初の列を
159 これらのデータの各点がその点から始まる各線をアンラップする
165 キーワード<varname>"unfold"</varname> が使用され,
167 外形はラップされているのではなく折り畳まれていると
171 折りたたみ点 -- または "尖点" -- において,
172 外形は連続ですが,その傾きは不連続になります:
173 傾きは絶対値がその両側の点でほぼ等しくなりますが,
177 折りたたみは例えば<varname>Y= acos(cos(X))</varname>
180 YからXを回復するのはラップされた場合と比べてはるかに困難です.
182 外形が準水平切片の一つの上に接線方向に折り畳まれた場合のように,
183 あいまいな状況が存在する可能性があります.
187 a) そこから始まる外形の片側が逆方向(反対)となり,
189 b) 外形と傾きの連続性が保持され,考慮する点
190 (局所的な傾きに基づく小さなジャンプを付加する必要が
194 入力される外形の左端の傾きが最初の基準として
195 使用されます.展開された外形は元の本当の外形に
197 加えて,アンラップする場合,定義はされますが
200 <para>既知の制限: 現在, 折り畳まれている面は処理できません.</para>
204 <para>1次元の外形をアンラップまたは展開:</para>
205 <programlisting role="example"><![CDATA[
209 f.figure_size = [800 1000];
210 f.figure_position(2) = 0;
211 f.figure_name = "unwrap() & ""unfold""" + _(": 1-D examples ");
213 ax.y_label.font_size=2;
216 t = linspace(-4,4.2,800);
219 titlepage("unwrap(): unwrap | unfold")
222 t2 = "$\text{Original profile: } \alpha=t^2+t-1$";
224 ax.tight_limits = "on";
225 yT = max(alpha) - strange(alpha)*0.1;
228 e.text_box_mode = "centered";
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)}$";
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)}$";
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"")}$";
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"")}$";
261 // 曲線の不連続点または尖点に星印を付けます:
263 plot(t(K), ralpha(K),"*")
265 // 処理(展開またはアンラップ)した外形をプロットします:
269 ax.tight_limits = "on";
271 yT = max(u) - strange(u)*0.2;
274 e.text_box_mode = "centered";
283 <para>2次元面をアンラップ:</para>
284 <programlisting role="example"><![CDATA[
288 ax.title.font_size = 2;
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");
299 x = linspace(-rmax/2, rmax/2, nx)-1;
300 y = linspace(-rmax/2, rmax/2, ny)+1;
301 [X, Y] = meshgrid(x,y);
308 z = sqrt(0.3+sinc(sqrt(z)*3))*17-7;
314 title("Original profile Z")
316 e.thickness = 0; // メッシュを削除
317 e.parent.tight_limits = "on";
321 zw = pmodulo(z, m); // ラップする
324 title(msprintf("Zw = pmodulo(Z, %g) (flat)",m))
326 ax0.tight_limits = "on";
329 // in both directions:
333 title(msprintf("unwrap(Zw, %g) (flat)", 0))
335 ax3.tight_limits = "on";
343 u = unwrap(zw, m, direc);
346 title(msprintf("unwrap(Zw, %g, ""%s"") (flat)",m,direc))
348 ax1.tight_limits = "on";
356 <imagedata fileref="../../images/unwrap_2D.png"/>
360 <refsection role="see also">
362 <simplelist type="inline">
364 <link linkend="atan">atan</link>
367 <link linkend="modulo">modulo</link>
371 <refsection role="bibliography">
374 <ulink url="http://siptoolbox.sourceforge.net/doc/sip-0.7.0-reference/unwrapl.html">SIP toolbox: unwrap linear</ulink>
377 <ulink url="http://siptoolbox.sourceforge.net/doc/sip-0.7.0-reference/unwrapp.html">SIP toolbox: unwrap along path</ulink>
380 <refsection role="history tag">
384 <revnumber>5.5.0</revnumber>
385 <revdescription>unwrap() 関数が導入されました</revdescription>