7016
|
1 ## Copyright (C) 2007 John W. Eaton |
|
2 ## |
|
3 ## This file is part of Octave. |
|
4 ## |
|
5 ## Octave is free software; you can redistribute it and/or modify it |
|
6 ## under the terms of the GNU General Public License as published by |
|
7 ## the Free Software Foundation; either version 3 of the License, or (at |
|
8 ## your option) any later version. |
|
9 ## |
|
10 ## Octave is distributed in the hope that it will be useful, but |
|
11 ## WITHOUT ANY WARRANTY; without even the implied warranty of |
|
12 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
|
13 ## General Public License for more details. |
|
14 ## |
|
15 ## You should have received a copy of the GNU General Public License |
|
16 ## along with Octave; see the file COPYING. If not, see |
|
17 ## <http://www.gnu.org/licenses/>. |
|
18 |
6480
|
19 %!function x = set_slice(size, dim, slice) |
|
20 %! x = ones(size); |
|
21 %! switch dim |
|
22 %! case 11 |
|
23 %! x(slice) = 2; |
|
24 %! case 21 |
|
25 %! x(slice, :) = 2; |
|
26 %! case 22 |
|
27 %! x(:, slice) = 2; |
|
28 %! case 31 |
|
29 %! x(slice, :, :) = 2; |
|
30 %! case 32 |
|
31 %! x(:, slice, :) = 2; |
|
32 %! case 33 |
|
33 %! x(:, :, slice) = 2; |
|
34 %! otherwise |
|
35 %! error("invalid dim, '%d'", dim); |
|
36 %! endswitch |
|
37 %! endfunction |
|
38 |
|
39 ## size = [2 0] |
|
40 %!assert(set_slice([2 0], 11, []), zeros([2 0])); |
|
41 %!error <A\(I\) = X: unable to resize A> set_slice([2 0], 11, 1) |
|
42 %!error <A\(I\) = X: unable to resize A> set_slice([2 0], 11, 2) |
|
43 %!error <A\(I\) = X: unable to resize A> set_slice([2 0], 11, 3) |
|
44 %!assert(set_slice([2 0], 21, []), zeros([2 0])); |
|
45 %!assert(set_slice([2 0], 21, 1), zeros([2 0])); |
|
46 %!assert(set_slice([2 0], 21, 2), zeros([2 0])); |
|
47 %!assert(set_slice([2 0], 21, 3), zeros([3 0])); |
|
48 %!assert(set_slice([2 0], 22, []), zeros([2 0])); |
|
49 %!assert(set_slice([2 0], 22, 1), [2 2]'); |
|
50 %!assert(set_slice([2 0], 22, 2), [0 0;2 2]'); |
|
51 %!assert(set_slice([2 0], 22, 3), [0 0;0 0;2 2]'); |
|
52 %!assert(set_slice([2 0], 31, []), zeros([2 0])); |
|
53 %!assert(set_slice([2 0], 31, 1), zeros([2 0])); |
|
54 %!assert(set_slice([2 0], 31, 2), zeros([2 0])); |
|
55 %!assert(set_slice([2 0], 31, 3), zeros([3 0])); |
|
56 %!assert(set_slice([2 0], 32, []), zeros([2 0])); |
|
57 %!assert(set_slice([2 0], 32, 1), [2 2]'); |
|
58 %!assert(set_slice([2 0], 32, 2), [0 0;2 2]'); |
|
59 %!assert(set_slice([2 0], 32, 3), [0 0;0 0;2 2]'); |
|
60 %!assert(set_slice([2 0], 33, []), zeros([2 0])); |
|
61 %!assert(set_slice([2 0], 33, 1), zeros([2 0])); |
|
62 %!assert(set_slice([2 0], 33, 2), zeros([2 0 2])); |
|
63 %!assert(set_slice([2 0], 33, 3), zeros([2 0 3])); |
|
64 |
|
65 ## size = [0 2] |
|
66 %!assert(set_slice([0 2], 11, []), zeros([0 2])); |
6922
|
67 %!assert(set_slice([0 2], 11, 1), 2); |
|
68 %!assert(set_slice([0 2], 11, 2), [0, 2]); |
|
69 %!assert(set_slice([0 2], 11, 3), [0, 0, 2]); |
6480
|
70 %!assert(set_slice([0 2], 21, []), zeros([0 2])); |
|
71 %!assert(set_slice([0 2], 21, 1), [2 2]); |
|
72 %!assert(set_slice([0 2], 21, 2), [0 0;2 2]); |
|
73 %!assert(set_slice([0 2], 21, 3), [0 0;0 0;2 2]); |
|
74 %!assert(set_slice([0 2], 22, []), zeros([0 2])); |
|
75 %!assert(set_slice([0 2], 22, 1), zeros([0 2])); |
|
76 %!assert(set_slice([0 2], 22, 2), zeros([0 2])); |
|
77 %!assert(set_slice([0 2], 22, 3), zeros([0 3])); |
|
78 %!assert(set_slice([0 2], 31, []), zeros([0 2])); |
|
79 %!assert(set_slice([0 2], 31, 1), [2 2]); |
|
80 %!assert(set_slice([0 2], 31, 2), [0 0;2 2]); |
|
81 %!assert(set_slice([0 2], 31, 3), [0 0;0 0;2 2]); |
|
82 %!assert(set_slice([0 2], 32, []), zeros([0 2])); |
|
83 %!assert(set_slice([0 2], 32, 1), zeros([0 2])); |
|
84 %!assert(set_slice([0 2], 32, 2), zeros([0 2])); |
|
85 %!assert(set_slice([0 2], 32, 3), zeros([0 3])); |
|
86 %!assert(set_slice([0 2], 33, []), zeros([0 2])); |
|
87 %!assert(set_slice([0 2], 33, 1), zeros([0 2])); |
|
88 %!assert(set_slice([0 2], 33, 2), zeros([0 2 2])); |
|
89 %!assert(set_slice([0 2], 33, 3), zeros([0 2 3])); |
|
90 |
|
91 ## size = [2 1] |
|
92 %!assert(set_slice([2 1], 11, []), ones([2 1])); |
|
93 %!assert(set_slice([2 1], 11, 1), [2 1]'); |
|
94 %!assert(set_slice([2 1], 11, 2), [1 2]'); |
|
95 %!assert(set_slice([2 1], 11, 3), [1 1 2]'); |
|
96 %!assert(set_slice([2 1], 11, 4), [1 1 0 2]'); |
|
97 %!assert(set_slice([2 1], 21, []), ones([2 1])); |
|
98 %!assert(set_slice([2 1], 21, 1), [2 1]'); |
|
99 %!assert(set_slice([2 1], 21, 2), [1 2]'); |
|
100 %!assert(set_slice([2 1], 21, 3), [1 1 2]'); |
|
101 %!assert(set_slice([2 1], 21, 4), [1 1 0 2]'); |
|
102 %!assert(set_slice([2 1], 22, []), ones([2 1])); |
|
103 %!assert(set_slice([2 1], 22, 1), [2 2]'); |
|
104 %!assert(set_slice([2 1], 22, 2), [1 1;2 2]'); |
|
105 %!assert(set_slice([2 1], 22, 3), [1 1;0 0;2 2]'); |
|
106 %!assert(set_slice([2 1], 31, []), ones([2 1])); |
|
107 %!assert(set_slice([2 1], 31, 1), [2 1]'); |
|
108 %!assert(set_slice([2 1], 31, 2), [1 2]'); |
|
109 %!assert(set_slice([2 1], 31, 3), [1 1 2]'); |
|
110 %!assert(set_slice([2 1], 31, 4), [1 1 0 2]'); |
|
111 %!assert(set_slice([2 1], 32, []), ones([2 1])); |
|
112 %!assert(set_slice([2 1], 32, 1), [2 2]'); |
|
113 %!assert(set_slice([2 1], 32, 2), [1 1;2 2]'); |
|
114 %!assert(set_slice([2 1], 32, 3), [1 1;0 0;2 2]'); |
|
115 %!assert(set_slice([2 1], 33, []), ones([2 1])); |
|
116 %!assert(set_slice([2 1], 33, 1), [2 2]'); |
|
117 %!assert(set_slice([2 1], 33, 2), reshape([1 1 2 2],[2 1 2])); |
|
118 %!assert(set_slice([2 1], 33, 3), reshape([1 1 0 0 2 2],[2 1 3])); |
|
119 |
|
120 ## size = [1 2] |
|
121 %!assert(set_slice([1 2], 11, []), ones([1 2])); |
|
122 %!assert(set_slice([1 2], 11, 1), [2 1]); |
|
123 %!assert(set_slice([1 2], 11, 2), [1 2]); |
|
124 %!assert(set_slice([1 2], 11, 3), [1 1 2]); |
|
125 %!assert(set_slice([1 2], 11, 4), [1 1 0 2]); |
|
126 %!assert(set_slice([1 2], 21, []), ones([1 2])); |
|
127 %!assert(set_slice([1 2], 21, 1), [2 2]); |
|
128 %!assert(set_slice([1 2], 21, 2), [1 1;2 2]); |
|
129 %!assert(set_slice([1 2], 21, 3), [1 1;0 0;2 2]); |
|
130 %!assert(set_slice([1 2], 22, []), ones([1 2])); |
|
131 %!assert(set_slice([1 2], 22, 1), [2 1]); |
|
132 %!assert(set_slice([1 2], 22, 2), [1 2]); |
|
133 %!assert(set_slice([1 2], 22, 3), [1 1 2]); |
|
134 %!assert(set_slice([1 2], 22, 4), [1 1 0 2]); |
|
135 %!assert(set_slice([1 2], 31, []), ones([1 2])); |
|
136 %!assert(set_slice([1 2], 31, 1), [2 2]); |
|
137 %!assert(set_slice([1 2], 31, 2), [1 1;2 2]); |
|
138 %!assert(set_slice([1 2], 31, 3), [1 1;0 0;2 2]); |
|
139 %!assert(set_slice([1 2], 32, []), ones([1 2])); |
|
140 %!assert(set_slice([1 2], 32, 1), [2 1]); |
|
141 %!assert(set_slice([1 2], 32, 2), [1 2]); |
|
142 %!assert(set_slice([1 2], 32, 3), [1 1 2]); |
|
143 %!assert(set_slice([1 2], 32, 4), [1 1 0 2]); |
|
144 %!assert(set_slice([1 2], 33, []), ones([1 2])); |
|
145 %!assert(set_slice([1 2], 33, 1), [2 2]); |
|
146 %!assert(set_slice([1 2], 33, 2), reshape([1 1 2 2],[1 2 2])); |
|
147 %!assert(set_slice([1 2], 33, 3), reshape([1 1 0 0 2 2],[1 2 3])); |
|
148 |
|
149 ## size = [2 2] |
|
150 %!assert(set_slice([2 2], 11, []), ones([2 2])); |
|
151 %!assert(set_slice([2 2], 11, 1), [2 1;1 1]); |
|
152 %!assert(set_slice([2 2], 11, 2), [1 1;2 1]); |
|
153 %!assert(set_slice([2 2], 11, 3), [1 2;1 1]); |
|
154 %!assert(set_slice([2 2], 11, 4), [1 1;1 2]); |
|
155 %!error <invalid matrix index = 5> set_slice([2 2], 11, 5) |
|
156 %!error <invalid matrix index = 6> set_slice([2 2], 11, 6) |
|
157 %!assert(set_slice([2 2], 21, []), ones([2 2])); |
|
158 %!assert(set_slice([2 2], 21, 1), [2 2;1 1]); |
|
159 %!assert(set_slice([2 2], 21, 2), [1 1;2 2]); |
|
160 %!assert(set_slice([2 2], 21, 3), [1 1;1 1;2 2]); |
|
161 %!assert(set_slice([2 2], 21, 4), [1 1;1 1;0 0;2 2]); |
|
162 %!assert(set_slice([2 2], 22, []), ones([2 2])); |
|
163 %!assert(set_slice([2 2], 22, 1), [2 2;1 1]'); |
|
164 %!assert(set_slice([2 2], 22, 2), [1 1;2 2]'); |
|
165 %!assert(set_slice([2 2], 22, 3), [1 1;1 1;2 2]'); |
|
166 %!assert(set_slice([2 2], 22, 4), [1 1;1 1;0 0;2 2]'); |
|
167 %!assert(set_slice([2 2], 31, []), ones([2 2])); |
|
168 %!assert(set_slice([2 2], 31, 1), [2 2;1 1]); |
|
169 %!assert(set_slice([2 2], 31, 2), [1 1;2 2]); |
|
170 %!assert(set_slice([2 2], 31, 3), [1 1;1 1;2 2]); |
|
171 %!assert(set_slice([2 2], 31, 4), [1 1;1 1;0 0;2 2]); |
|
172 %!assert(set_slice([2 2], 32, []), ones([2 2])); |
|
173 %!assert(set_slice([2 2], 32, 1), [2 2;1 1]'); |
|
174 %!assert(set_slice([2 2], 32, 2), [1 1;2 2]'); |
|
175 %!assert(set_slice([2 2], 32, 3), [1 1;1 1;2 2]'); |
|
176 %!assert(set_slice([2 2], 32, 4), [1 1;1 1;0 0;2 2]'); |
|
177 %!assert(set_slice([2 2], 33, []), ones([2 2])); |
|
178 %!assert(set_slice([2 2], 33, 1), [2 2;2 2]); |
|
179 %!assert(set_slice([2 2], 33, 2), reshape([1 1 1 1 2 2 2 2],[2 2 2])); |
|
180 %!assert(set_slice([2 2], 33, 3), reshape([1 1 1 1 0 0 0 0 2 2 2 2],[2 2 3])); |