* Bug 14567 fixed [Scinotes]: Restore the TODO feature
[scilab.git] / scilab / modules / elementary_functions / tests / unit_tests / unwrap.dia.ref
1 // =============================================================================
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) 2013 - Samuel Gougeon
4 //
5 //  This file is distributed under the same license as the Scilab package.
6 // =============================================================================
7 //
8 // <-- CLI SHELL MODE -->
9 // Example #1 (1D wrapped)
10 t = linspace(-4, 4.2, 800);
11 Y = t.^2 + t -1;
12 Yw = atan(tan(Y));  // Raw wrapped recovered Y [pi]
13 Yunw = unwrap(Yw, %pi);
14 assert_checkequal(size(Yunw), size(Y));
15 assert_checkalmostequal(max(Yunw), 8.273629385640850486539, [], 1e-12);
16 assert_checkalmostequal(min(Yunw), -13.816370473381940797708, [], 1e-12);
17 // Example #2 (1D wrapped)
18 rand("seed", 0);
19 c = (rand(1, 1)-0.5)*4;
20 Yw = pmodulo(Y, 5) + c;  // unwrap() is unsensitive to a constant and even to a trend
21 [Yunw, K] = unwrap(Yw, 0);
22 assert_checkequal(size(Yunw), size(Y));
23 assert_checkalmostequal(max(Yunw), 9.6852994618564913764658, [], 1e-12);
24 assert_checkalmostequal(min(Yunw), -12.404700397166287473283, [], 1e-12);
25 assert_checkequal(K, [15 98 233 450 585 668 734 791]);
26 // Example #3 (1D folded)
27 Yf = 1 + asin(sin(Y));  // Raw folded recovered Y [2.pi], + constant Y shift
28 Yunf = unwrap(Yf, "unfold");
29 assert_checkequal(size(Yunf), size(Y));
30 assert_checkalmostequal(max(Yunf), 9.4279967527199310950436, [], 1e-12);
31 assert_checkalmostequal(min(Yunf), -12.436144421661456505035, [], 1e-12);
32 // Example #4 (1D folded)
33 Yf = 1 + Y/10 + acos(cos(Y)); // Raw recovered Y [2.pi], + linear trend
34 [Yunf, K] = unwrap(Yf, "unfold");
35 assert_checkequal(size(Yunf), size(Y));
36 assert_checkalmostequal(max(Yunf), 15.801371238872524926933, [], 1e-12);
37 assert_checkalmostequal(min(Yunf), -6.1759877188984493301405, [], 1e-12);
38 assert_checkequal(K, [24 75 138 233 451 546 609 660 704 743 779]);
39 //Unwrapping 2D surfaces:
40 nx = 300;
41 ny = 400;
42 rmax = 8.8;
43 x = linspace(-rmax/2, rmax/2, nx)-1;
44 y = linspace(-rmax/2, rmax/2, ny)+1;
45 [X, Y] = meshgrid(x, y);
46 // Example #5 : 2D wrapped
47 Z = X.^2 + Y.^2;        // Parabolo├»d
48 m = 2.8;
49 Zw = pmodulo(Z, m);     // >raps it
50 Zunw  = unwrap(Zw, 0);  // Unwraps it in both directions, with free jumps
51 assert_checkequal(size(Zunw), size(Z));
52 assert_checkalmostequal(max(Zunw), 19.120000000000032969183, [], 1e-12);
53 assert_checkalmostequal(min(Zunw), -39.199790375290433531, [], 1e-12);
54 ZunwR = unwrap(Zw, 0, "r"); // Unwraps it along rows
55 assert_checkequal(size(ZunwR), size(Z));
56 assert_checkalmostequal(max(ZunwR), 2.78738299382542109583, [], 1e-12);
57 assert_checkalmostequal(min(ZunwR), -28.995103166214036605197, [], 1e-12);
58 ZunwC = unwrap(Zw, 0, "c"); // Unwraps it along columns
59 assert_checkequal(size(ZunwC), size(Z));
60 assert_checkalmostequal(max(ZunwC), 20.398076084160148724322, [], 1e-12);
61 assert_checkalmostequal(min(ZunwC), -11.462196183827872530969, [], 1e-12);
62 // Example #6 : 2D wrapped
63 Z = sqrt(0.3+sinc(sqrt(Z)*3))*17-7; // Defines the surface
64 m = 2.8;                     // Wrapping step (jump's amplitude)
65 Zw = pmodulo(Z, m);          // Wraps it
66 Zunw  = unwrap(Zw, m);       // Unwraps it in both directions, with given jump
67 assert_checkequal(size(Zunw), size(Z));
68 assert_checkalmostequal(max(Zunw), 12.380638179897072603808, [], 1e-12);
69 assert_checkalmostequal(min(Zunw), -2.109245308884592162713, [], 1e-12);
70 ZunwR = unwrap(Zw, m, "r"); // Unwraps it along rows
71 assert_checkequal(size(ZunwR), size(Z));
72 assert_checkalmostequal(max(ZunwR), 12.380638179897072603808, [], 1e-12);
73 assert_checkalmostequal(min(ZunwR), -2.109245308884592162713, [], 1e-12);
74 ZunwC = unwrap(Zw, m, "c"); // Unwraps it along columns
75 assert_checkequal(size(ZunwC), size(Z));
76 assert_checkalmostequal(max(ZunwC), 12.380638179897072603808, [], 1e-12);
77 assert_checkalmostequal(min(ZunwC), -2.1092453088845903863557, [], 1e-12);