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;