Mercurial > hg > medcouple
annotate talk/code/showalgo.m @ 74:305b7361a5bd default tip @
showalgo: save a snapshot instead of waiting for keyboard input
author | Jordi Gutiérrez Hermoso <jordigh@octave.org> |
---|---|
date | Sun, 29 May 2016 19:05:01 -0400 |
parents | 7bcf3d503d33 |
children |
rev | line source |
---|---|
71
7bcf3d503d33
shoalgo.m: give it a shebang and make it executable
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
70
diff
changeset
|
1 #!/usr/bin/octave |
7bcf3d503d33
shoalgo.m: give it a shebang and make it executable
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
70
diff
changeset
|
2 |
66
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
3 H = load("H"); |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
4 L = load("L") + 1; |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
5 R = load("R") + 1; |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
6 P = load("P") + 1; |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
7 Q = load("Q") + 1; |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
8 Ptot = load("Ptotal"); |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
9 Qtot = load("Qtotal"); |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
10 remaining = load("remaining"); |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
11 mc = load("mc"); |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
12 jackpot = load("jackpot"); |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
13 Am = load("Am"); |
67
1aa38f4846e0
showalgo: show the rank
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
66
diff
changeset
|
14 medc_idx = load("medc_idx"); |
66
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
15 Am(end+1) = mc; |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
16 |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
17 colidx = 1:columns(H); |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
18 |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
19 origH = repmat((H+1)/2, 1, 1, 3); |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
20 |
68
5510ac95a3d3
last minute fixes
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
67
diff
changeset
|
21 graphics_toolkit fltk; |
5510ac95a3d3
last minute fixes
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
67
diff
changeset
|
22 figure |
74
305b7361a5bd
showalgo: save a snapshot instead of waiting for keyboard input
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
71
diff
changeset
|
23 |
305b7361a5bd
showalgo: save a snapshot instead of waiting for keyboard input
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
71
diff
changeset
|
24 |
305b7361a5bd
showalgo: save a snapshot instead of waiting for keyboard input
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
71
diff
changeset
|
25 function snapshot() |
305b7361a5bd
showalgo: save a snapshot instead of waiting for keyboard input
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
71
diff
changeset
|
26 persistent x = 1; |
305b7361a5bd
showalgo: save a snapshot instead of waiting for keyboard input
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
71
diff
changeset
|
27 fname = sprintf("%02d.png", x); |
305b7361a5bd
showalgo: save a snapshot instead of waiting for keyboard input
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
71
diff
changeset
|
28 print("-dpng", fname); |
305b7361a5bd
showalgo: save a snapshot instead of waiting for keyboard input
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
71
diff
changeset
|
29 x++; |
305b7361a5bd
showalgo: save a snapshot instead of waiting for keyboard input
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
71
diff
changeset
|
30 endfunction |
68
5510ac95a3d3
last minute fixes
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
67
diff
changeset
|
31 |
66
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
32 for iter = 1:length(Am) |
69
456e3f722147
showalgo: fix handling of the jackpot casex
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
68
diff
changeset
|
33 if iter > rows(L) |
456e3f722147
showalgo: fix handling of the jackpot casex
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
68
diff
changeset
|
34 break |
456e3f722147
showalgo: fix handling of the jackpot casex
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
68
diff
changeset
|
35 endif |
456e3f722147
showalgo: fix handling of the jackpot casex
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
68
diff
changeset
|
36 |
66
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
37 ## Reset the image |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
38 imgH = origH; |
67
1aa38f4846e0
showalgo: show the rank
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
66
diff
changeset
|
39 |
66
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
40 ## Make greater-than red |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
41 red = imgH(:,:,1); |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
42 red(colidx < L(iter, :)') = 1; |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
43 imgH(:, :, 1) = red; |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
44 |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
45 ## Make less-than blue |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
46 blue = imgH(:,:,3); |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
47 blue(colidx > R(iter, :)') = 1; |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
48 imgH(:, :, 3) = blue; |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
49 |
67
1aa38f4846e0
showalgo: show the rank
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
66
diff
changeset
|
50 printf("Remaining: %d\n", remaining(iter)) |
66
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
51 imshow(imgH); |
74
305b7361a5bd
showalgo: save a snapshot instead of waiting for keyboard input
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
71
diff
changeset
|
52 snapshot; |
66
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
53 |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
54 ## Make the guess yellow |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
55 [i,j] = find(Am(iter) == H); |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
56 imgH(i,j,1) = imgH(i,j,2) = 1; |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
57 imgH(i,j,3) = 0; |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
58 |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
59 imshow(imgH); |
74
305b7361a5bd
showalgo: save a snapshot instead of waiting for keyboard input
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
71
diff
changeset
|
60 snapshot; |
66
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
61 |
70
430f958f007c
showalgo.m: restore hack for final iteration
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
69
diff
changeset
|
62 if iter == length(Am) |
430f958f007c
showalgo.m: restore hack for final iteration
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
69
diff
changeset
|
63 break |
430f958f007c
showalgo.m: restore hack for final iteration
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
69
diff
changeset
|
64 endif |
430f958f007c
showalgo.m: restore hack for final iteration
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
69
diff
changeset
|
65 |
66
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
66 ## Check the left side |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
67 imgLeft = imgH; |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
68 red = imgH(:, :, 1); |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
69 green = imgH(:, :, 2); |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
70 blue = imgH(:, :, 3); |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
71 |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
72 idx = colidx > P(iter,:)'; |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
73 |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
74 ## Brighten blue |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
75 blue(idx) = 1; |
67
1aa38f4846e0
showalgo: show the rank
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
66
diff
changeset
|
76 |
66
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
77 ## Dim red and green |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
78 red(idx) .*= 0.5; |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
79 green(idx) .*= 0.5; |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
80 |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
81 imgLeft(:,:,2) = green; |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
82 imgLeft(:,:,3) = blue; |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
83 |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
84 ## Make the guess yellow again |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
85 [i,j] = find(Am(iter) == H); |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
86 imgH(i,j,1) = imgH(i,j,2) = 1; |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
87 imgH(i,j,3) = 0; |
67
1aa38f4846e0
showalgo: show the rank
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
66
diff
changeset
|
88 |
66
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
89 imshow(imgLeft); |
74
305b7361a5bd
showalgo: save a snapshot instead of waiting for keyboard input
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
71
diff
changeset
|
90 snapshot; |
66
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
91 |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
92 ## Check the right side |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
93 imgRight = imgH; |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
94 red = imgH(:, :, 1); |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
95 green = imgH(:, :, 2); |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
96 blue = imgH(:, :, 3); |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
97 |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
98 idx = colidx < Q(iter,:)'; |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
99 |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
100 ## Brighten red |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
101 blue(idx) = 1; |
67
1aa38f4846e0
showalgo: show the rank
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
66
diff
changeset
|
102 |
66
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
103 ## Dim blue and green |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
104 blue(idx) .*= 0.5; |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
105 green(idx) .*= 0.5; |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
106 |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
107 imgRight(:,:,2) = green; |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
108 imgRight(:,:,3) = blue; |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
109 |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
110 ## Make the guess yellow again |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
111 [i,j] = find(Am(iter) == H); |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
112 imgH(i,j,1) = imgH(i,j,2) = 1; |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
113 imgH(i,j,3) = 0; |
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
114 imshow(imgRight); |
74
305b7361a5bd
showalgo: save a snapshot instead of waiting for keyboard input
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
71
diff
changeset
|
115 snapshot; |
66
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
116 |
68
5510ac95a3d3
last minute fixes
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
67
diff
changeset
|
117 imshow(imgH); |
5510ac95a3d3
last minute fixes
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
67
diff
changeset
|
118 printf("rank is between %d and %d (target: %d)\n", |
5510ac95a3d3
last minute fixes
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
67
diff
changeset
|
119 Ptot(iter), Qtot(iter), medc_idx) |
74
305b7361a5bd
showalgo: save a snapshot instead of waiting for keyboard input
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
71
diff
changeset
|
120 snapshot; |
68
5510ac95a3d3
last minute fixes
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
67
diff
changeset
|
121 |
66
916349600c4b
algorithm-visualisation code
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
122 endfor |
68
5510ac95a3d3
last minute fixes
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
67
diff
changeset
|
123 |
5510ac95a3d3
last minute fixes
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
67
diff
changeset
|
124 if (jackpot) |
5510ac95a3d3
last minute fixes
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
67
diff
changeset
|
125 printf("Jackpot!\n") |
5510ac95a3d3
last minute fixes
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
67
diff
changeset
|
126 endif |
74
305b7361a5bd
showalgo: save a snapshot instead of waiting for keyboard input
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
71
diff
changeset
|
127 snapshot; |