comparison scripts/general/interp3.m @ 15333:7d2eb4a01798

fix problem in interp3.m when method argument is passed, added tests, and made one test more stringent
author Kris Thielemans <kris.f.thielemans@gmail.com>
date Fri, 07 Sep 2012 12:24:15 +0100
parents f3d52523cde1
children bc924baa2c4e
comparison
equal deleted inserted replaced
15332:b613757ff5be 15333:7d2eb4a01798
89 && nargs == (ndims (varargin{1}) + 1))) 89 && nargs == (ndims (varargin{1}) + 1)))
90 v = varargin{1}; 90 v = varargin{1};
91 if (ndims (v) != 3) 91 if (ndims (v) != 3)
92 error ("interp3: expect 3-dimensional array of values"); 92 error ("interp3: expect 3-dimensional array of values");
93 endif 93 endif
94 x = varargin (2:end); 94 x = varargin (2:nargs);
95 if (any (! cellfun (@isvector, x))) 95 if (any (! cellfun (@isvector, x)))
96 for i = 2 : 3 96 for i = 2 : 3
97 if (! size_equal (x{1}, x{i})) 97 if (! size_equal (x{1}, x{i}))
98 error ("interp3: dimensional mismatch"); 98 error ("interp3: dimensional mismatch");
99 endif 99 endif
135 endif 135 endif
136 endfunction 136 endfunction
137 137
138 138
139 %!test 139 %!test
140 %! x = y = z = -1:1; 140 %! x = y = z = -1:1; y = y + 2;
141 %! f = @(x,y,z) x.^2 - y - z.^2; 141 %! f = @(x,y,z) x.^2 - y - z.^2;
142 %! [xx, yy, zz] = meshgrid (x, y, z); 142 %! [xx, yy, zz] = meshgrid (x, y, z);
143 %! v = f (xx,yy,zz); 143 %! v = f (xx,yy,zz);
144 %! xi = yi = zi = -1:0.5:1; 144 %! xi = yi = zi = -1:0.5:1; yi = yi + 2.1;
145 %! [xxi, yyi, zzi] = meshgrid (xi, yi, zi); 145 %! [xxi, yyi, zzi] = meshgrid (xi, yi, zi);
146 %! vi = interp3 (x, y, z, v, xxi, yyi, zzi); 146 %! vi = interp3 (x, y, z, v, xxi, yyi, zzi);
147 %! [xxi, yyi, zzi] = ndgrid (xi, yi, zi); 147 %! [xxi, yyi, zzi] = ndgrid (yi, xi, zi);
148 %! vi2 = interpn (x, y, z, v, xxi, yyi, zzi); 148 %! vi2 = interpn (y, x, z, v, xxi, yyi, zzi);
149 %! tol = 10 * eps;
150 %! assert (vi, vi2, tol);
151
152 %!test
153 %! x=z=1:2; y=1:3;xi=zi=.6:1.6; yi=1; v=ones([3,2,2]); v(:,2,1)=[7 ;5;4]; v(:,1,2)=[2 ;3;5];
154 %! [xxi3, yyi3, zzi3] = meshgrid (xi, yi, zi);
155 %! [xxi, yyi, zzi] = ndgrid (yi, xi, zi);
156 %! vi = interp3 (x, y, z, v, xxi3, yyi3, zzi3, "nearest");
157 %! vi2 = interpn (y, x, z, v, xxi, yyi, zzi,"nearest");
158 %! assert (vi, vi2);
159
160 %!test
161 %! x=z=1:2; y=1:3;xi=zi=.6:1.6; yi=1; v=ones([3,2,2]); v(:,2,1)=[7 ;5;4]; v(:,1,2)=[2 ;3;5];
162 %! vi = interp3 (x, y, z, v, xi+1, yi, zi, "nearest",3);
163 %! vi2 = interpn (y, x, z, v, yi, xi+1, zi,"nearest", 3);
164 %! assert (vi, vi2);
165
166 %!test
167 %! x=z=1:2; y=1:3;xi=zi=.6:1.6; yi=1; v=ones([3,2,2]); v(:,2,1)=[7 ;5;4]; v(:,1,2)=[2 ;3;5];
168 %! vi = interp3 (x, y, z, v, xi, yi, zi, "nearest");
169 %! vi2 = interpn (y, x, z, v, yi, xi, zi,"nearest");
170 %! assert (vi, vi2);
171
172 %!test
173 %! x=z=1:2; y=1:3;xi=zi=.6:1.6; yi=1; v=ones([3,2,2]); v(:,2,1)=[7 ;5;4]; v(:,1,2)=[2 ;3;5];
174 %! vi = interp3 (v, xi, yi, zi, "nearest",3);
175 %! vi2 = interpn (v, yi, xi, zi,"nearest", 3);
176 %! assert (vi, vi2);
177
178 %!test
179 %! xi=zi=.6:1.6; yi=1; v=ones([3,2,2]); v(:,2,1)=[7 ;5;4]; v(:,1,2)=[2 ;3;5];
180 %! vi = interp3 (v, xi, yi, zi, "nearest");
181 %! vi2 = interpn (v, yi, xi, zi,"nearest");
149 %! assert (vi, vi2); 182 %! assert (vi, vi2);
150 183
151 %!shared z, zout, tol 184 %!shared z, zout, tol
152 %! z = zeros (3, 3, 3); 185 %! z = zeros (3, 3, 3);
153 %! zout = zeros (5, 5, 5); 186 %! zout = zeros (5, 5, 5);