comparison scripts/geometry/griddata3.m @ 7585:522433b05f45

Fix griddata3 and add test code
author David Bateman <dbateman@free.fr>
date Wed, 12 Mar 2008 15:05:00 +0100
parents 42b70df74c21
children ec0a13863eb7 72830070a17b
comparison
equal deleted inserted replaced
7584:a5307fa238ac 7585:522433b05f45
28 ## @seealso{griddata, delaunayn} 28 ## @seealso{griddata, delaunayn}
29 ## @end deftypefn 29 ## @end deftypefn
30 30
31 ## Author: David Bateman <dbateman@free.fr> 31 ## Author: David Bateman <dbateman@free.fr>
32 32
33 function [yi] = griddata3 (x, y, z,v, xi, yi, zi, method, varargin) 33 function vi = griddata3 (x, y, z, v, xi, yi, zi, method, varargin)
34 34
35 if (nargin < 7) 35 if (nargin < 7)
36 print_usage (); 36 print_usage ();
37 endif 37 endif
38 38
46 && (numel (xi) != numel (yi) || numel (xi) != numel (zi))) 46 && (numel (xi) != numel (yi) || numel (xi) != numel (zi)))
47 [xi, yi, zi] = meshgrid (xi, yi, zi); 47 [xi, yi, zi] = meshgrid (xi, yi, zi);
48 endif 48 endif
49 49
50 if (any (size(xi) != size(yi)) || any (size(xi) != size(zi))) 50 if (any (size(xi) != size(yi)) || any (size(xi) != size(zi)))
51 error ("griddata: xi, yi and zi must be vectors or matrices of same size"); 51 error ("griddata3: xi, yi and zi must be vectors or matrices of same size");
52 endif 52 endif
53 53
54 vi = griddata ([x(:), y(:), z(:)], v(:), [xi(:), yi(:), zi(:)], varargin{:}); 54 vi = griddatan ([x(:), y(:), z(:)], v(:), [xi(:), yi(:), zi(:)], varargin{:});
55 vi = reshape (vi, size (xi)); 55 vi = reshape (vi, size (xi));
56 endfunction 56 endfunction
57 57
58 %!test
59 %! rand('state', 0);
60 %! x = 2 * rand(1000, 1) - 1;
61 %! y = 2 * rand(1000, 1) - 1;
62 %! z = 2 * rand(1000, 1) - 1;
63 %! v = x.^2 + y.^2 + z.^2;
64 %! [xi, yi, zi] = meshgrid (-0.8:0.2:0.8);
65 %! ##vi = reshape (griddatan([x(:), y(:), z(:)], v, [xi(:), yi(:), zi(:)], 'linear'), size (xi));
66 %! vi = griddata3 (x, y, z, v, xi, yi, zi, 'linear');
67 %! vv = vi - xi.^2 - yi.^2 - zi.^2;
68 %! assert (max(abs(vv(:))), 0, 0.1)
69
70 %!test
71 %! rand('state', 0);
72 %! x = 2 * rand(1000, 1) - 1;
73 %! y = 2 * rand(1000, 1) - 1;
74 %! z = 2 * rand(1000, 1) - 1;
75 %! v = x.^2 + y.^2 + z.^2;
76 %! [xi, yi, zi] = meshgrid (-0.8:0.2:0.8);
77 %! ##vi = reshape (griddatan([x(:), y(:), z(:)], v, [xi(:), yi(:), zi(:)], 'linear'), size (xi));
78 %! vi = griddata3 (x, y, z, v, xi, yi, zi, 'nearest');
79 %! vv = vi - xi.^2 - yi.^2 - zi.^2;
80 %! assert (max(abs(vv(:))), 0, 0.1)