Mercurial > hg > octave-thorsten
comparison scripts/general/interp3.m @ 15335:7d2eb4a01798 draft
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 |
comparison
equal
deleted
inserted
replaced
15334:b613757ff5be | 15335: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); |