Mercurial > hg > octave-nkf
comparison scripts/general/interp3.m @ 10635:d1978e7364ad
Print name of function in error() string messages.
author | Rik <octave@nomad.inbox5.com> |
---|---|
date | Sun, 16 May 2010 22:26:54 -0700 |
parents | 95c3e38098bf |
children | be55736a0783 |
comparison
equal
deleted
inserted
replaced
10634:60542efcfa2c | 10635:d1978e7364ad |
---|---|
73 if (ischar (varargin{end})) | 73 if (ischar (varargin{end})) |
74 method = varargin{end}; | 74 method = varargin{end}; |
75 nargs = nargs - 1; | 75 nargs = nargs - 1; |
76 elseif (ischar (varargin{end-1})) | 76 elseif (ischar (varargin{end-1})) |
77 if (! isnumeric (varargin{end}) || ! isscalar (varargin{end})) | 77 if (! isnumeric (varargin{end}) || ! isscalar (varargin{end})) |
78 error ("extrapal is expected to be a numeric scalar"); | 78 error ("interp3: extrapal is expected to be a numeric scalar"); |
79 endif | 79 endif |
80 extrapval = varargin{end}; | 80 extrapval = varargin{end}; |
81 method = varargin{end-1}; | 81 method = varargin{end-1}; |
82 nargs = nargs - 2; | 82 nargs = nargs - 2; |
83 endif | 83 endif |
84 | 84 |
85 if (nargs < 3 || (nargs == 4 && ! isvector (varargin{1}) | 85 if (nargs < 3 || (nargs == 4 && ! isvector (varargin{1}) |
86 && nargs == (ndims (varargin{1}) + 1))) | 86 && nargs == (ndims (varargin{1}) + 1))) |
87 v = varargin{1}; | 87 v = varargin{1}; |
88 if (ndims (v) != 3) | 88 if (ndims (v) != 3) |
89 error ("expect 3-dimensional array of values"); | 89 error ("interp3: expect 3-dimensional array of values"); |
90 endif | 90 endif |
91 x = varargin (2:4); | 91 x = varargin (2:4); |
92 if (any (! cellfun (@isvector, x))) | 92 if (any (! cellfun (@isvector, x))) |
93 for i = 2 : 3 | 93 for i = 2 : 3 |
94 if (! size_equal (x{1}, x{i})) | 94 if (! size_equal (x{1}, x{i})) |
95 error ("dimensional mismatch"); | 95 error ("interp3: dimensional mismatch"); |
96 endif | 96 endif |
97 x{i} = permute (x{i}, [2, 1, 3]); | 97 x{i} = permute (x{i}, [2, 1, 3]); |
98 endfor | 98 endfor |
99 x{1} = permute (x{1}, [2, 1, 3]); | 99 x{1} = permute (x{1}, [2, 1, 3]); |
100 endif | 100 endif |
101 v = permute (v, [2, 1, 3]); | 101 v = permute (v, [2, 1, 3]); |
102 vi = ipermute (interpn (v, x{:}, method, extrapval), [2, 1, 3]); | 102 vi = ipermute (interpn (v, x{:}, method, extrapval), [2, 1, 3]); |
103 elseif (nargs == 7 && nargs == (2 * ndims (varargin{ceil (nargs / 2)})) + 1) | 103 elseif (nargs == 7 && nargs == (2 * ndims (varargin{ceil (nargs / 2)})) + 1) |
104 v = varargin{4}; | 104 v = varargin{4}; |
105 if (ndims (v) != 3) | 105 if (ndims (v) != 3) |
106 error ("expect 3-dimensional array of values"); | 106 error ("interp3: expect 3-dimensional array of values"); |
107 endif | 107 endif |
108 x = varargin (1:3); | 108 x = varargin (1:3); |
109 if (any (! cellfun (@isvector, x))) | 109 if (any (! cellfun (@isvector, x))) |
110 for i = 2 : 3 | 110 for i = 2 : 3 |
111 if (! size_equal (x{1}, x{i}) || ! size_equal (x{i}, v)) | 111 if (! size_equal (x{1}, x{i}) || ! size_equal (x{i}, v)) |
112 error ("dimensional mismatch"); | 112 error ("interp3: dimensional mismatch"); |
113 endif | 113 endif |
114 x{i} = permute (x{i}, [2, 1, 3]); | 114 x{i} = permute (x{i}, [2, 1, 3]); |
115 endfor | 115 endfor |
116 x{1} = permute (x{1}, [2, 1, 3]); | 116 x{1} = permute (x{1}, [2, 1, 3]); |
117 endif | 117 endif |
118 y = varargin (5:7); | 118 y = varargin (5:7); |
119 if (any (! cellfun (@isvector, y))) | 119 if (any (! cellfun (@isvector, y))) |
120 for i = 2 : 3 | 120 for i = 2 : 3 |
121 if (! size_equal (y{1}, y{i})) | 121 if (! size_equal (y{1}, y{i})) |
122 error ("dimensional mismatch"); | 122 error ("interp3: dimensional mismatch"); |
123 endif | 123 endif |
124 y{i} = permute (y{i}, [2, 1, 3]); | 124 y{i} = permute (y{i}, [2, 1, 3]); |
125 endfor | 125 endfor |
126 y{1} = permute (y{1}, [2, 1, 3]); | 126 y{1} = permute (y{1}, [2, 1, 3]); |
127 endif | 127 endif |
128 v = permute (v, [2, 1, 3]); | 128 v = permute (v, [2, 1, 3]); |
129 vi = ipermute (interpn (x{:}, v, y{:}, method, extrapval), [2, 1, 3]); | 129 vi = ipermute (interpn (x{:}, v, y{:}, method, extrapval), [2, 1, 3]); |
130 else | 130 else |
131 error ("wrong number or incorrectly formatted input arguments"); | 131 error ("interp3: wrong number or incorrectly formatted input arguments"); |
132 endif | 132 endif |
133 endfunction | 133 endfunction |
134 | 134 |
135 %!test | 135 %!test |
136 %! x = y = z = -1:1; | 136 %! x = y = z = -1:1; |