Mercurial > octave-libgccjit
annotate scripts/general/interp1.m @ 18642:a07814a8ffb0
interp1.m: Small formatting changes only.
* interp1.m: Keep line lengths < 80 characters. Use if/elseif to
avoid one unnecessary calculation.
author | Rik <rik@octave.org> |
---|---|
date | Tue, 08 Apr 2014 20:08:27 -0700 |
parents | 6a4b7ccc60b1 |
children |
rev | line source |
---|---|
17744
d63878346099
maint: Update copyright notices for release.
John W. Eaton <jwe@octave.org>
parents:
17307
diff
changeset
|
1 ## Copyright (C) 2000-2013 Paul Kienzle |
9929
45c08d7c2c79
allow discontinuous interpolant in interp1
Jaroslav Hajek <highegg@gmail.com>
parents:
9769
diff
changeset
|
2 ## Copyright (C) 2009 VZLU Prague |
5837 | 3 ## |
4 ## This file is part of Octave. | |
5 ## | |
6 ## Octave is free software; you can redistribute it and/or modify it | |
7 ## under the terms of the GNU General Public License as published by | |
7016 | 8 ## the Free Software Foundation; either version 3 of the License, or (at |
9 ## your option) any later version. | |
5837 | 10 ## |
11 ## Octave is distributed in the hope that it will be useful, but | |
12 ## WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
14 ## General Public License for more details. | |
15 ## | |
16 ## You should have received a copy of the GNU General Public License | |
7016 | 17 ## along with Octave; see the file COPYING. If not, see |
18 ## <http://www.gnu.org/licenses/>. | |
5837 | 19 |
20 ## -*- texinfo -*- | |
10846
a4f482e66b65
Grammarcheck more of the documentation.
Rik <octave@nomad.inbox5.com>
parents:
10821
diff
changeset
|
21 ## @deftypefn {Function File} {@var{yi} =} interp1 (@var{x}, @var{y}, @var{xi}) |
10820
c44c786f87ba
interp1.m: When absent set X equal to the inices of Y.
Ben Abbott <bpabbott@mac.com>
parents:
10793
diff
changeset
|
22 ## @deftypefnx {Function File} {@var{yi} =} interp1 (@var{y}, @var{xi}) |
5837 | 23 ## @deftypefnx {Function File} {@var{yi} =} interp1 (@dots{}, @var{method}) |
24 ## @deftypefnx {Function File} {@var{yi} =} interp1 (@dots{}, @var{extrap}) | |
18417 | 25 ## @deftypefnx {Function File} {@var{yi} =} interp1 (@dots{}, "left") |
26 ## @deftypefnx {Function File} {@var{yi} =} interp1 (@dots{}, "right") | |
14359
7277fe922e99
doc: Use Octave preference for double quote in docstrings in scripts/
Rik <octave@nomad.inbox5.com>
parents:
14335
diff
changeset
|
27 ## @deftypefnx {Function File} {@var{pp} =} interp1 (@dots{}, "pp") |
5837 | 28 ## |
18417 | 29 ## One-dimensional interpolation. |
30 ## | |
31 ## Interpolate input data to determine the value of @var{yi} at the points | |
18606
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
32 ## @var{xi}. If not specified, @var{x} is taken to be the indices of @var{y} |
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
33 ## (@code{1:length (@var{y})}). If @var{y} is a matrix or an N-dimensional |
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
34 ## array, the interpolation is performed on each column of @var{y}. |
5837 | 35 ## |
18606
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
36 ## The interpolation @var{method} is one of: |
5837 | 37 ## |
38 ## @table @asis | |
17281
bc924baa2c4e
doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents:
17174
diff
changeset
|
39 ## @item @qcode{"nearest"} |
18606
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
40 ## Return the nearest neighbor. |
10821
693e22af08ae
Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents:
10820
diff
changeset
|
41 ## |
18606
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
42 ## @item @qcode{"linear"} (default) |
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
43 ## Linear interpolation from nearest neighbors. |
10821
693e22af08ae
Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents:
10820
diff
changeset
|
44 ## |
17281
bc924baa2c4e
doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents:
17174
diff
changeset
|
45 ## @item @qcode{"pchip"} |
18606
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
46 ## Piecewise cubic Hermite interpolating polynomial---shape-preserving |
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
47 ## interpolation with smooth first derivative. |
10821
693e22af08ae
Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents:
10820
diff
changeset
|
48 ## |
17281
bc924baa2c4e
doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents:
17174
diff
changeset
|
49 ## @item @qcode{"cubic"} |
18606
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
50 ## Cubic interpolation (same as @qcode{"pchip"}). |
10821
693e22af08ae
Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents:
10820
diff
changeset
|
51 ## |
17281
bc924baa2c4e
doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents:
17174
diff
changeset
|
52 ## @item @qcode{"spline"} |
12175
2090995ca588
Correct en-dash,em-dash instances in docstrings.
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
53 ## Cubic spline interpolation---smooth first and second derivatives |
18606
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
54 ## throughout the curve. |
5837 | 55 ## @end table |
56 ## | |
18417 | 57 ## Adding '*' to the start of any method above forces @code{interp1} |
15218
94d512d712e3
Modified interp1.m file to check whether X has distinct values or not.
Ben Abbott <bpabbott@mac.com>
parents:
15193
diff
changeset
|
58 ## to assume that @var{x} is uniformly spaced, and only @code{@var{x}(1)} |
94d512d712e3
Modified interp1.m file to check whether X has distinct values or not.
Ben Abbott <bpabbott@mac.com>
parents:
15193
diff
changeset
|
59 ## and @code{@var{x}(2)} are referenced. This is usually faster, |
17281
bc924baa2c4e
doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents:
17174
diff
changeset
|
60 ## and is never slower. The default method is @qcode{"linear"}. |
5837 | 61 ## |
17281
bc924baa2c4e
doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents:
17174
diff
changeset
|
62 ## If @var{extrap} is the string @qcode{"extrap"}, then extrapolate values |
18417 | 63 ## beyond the endpoints using the current @var{method}. If @var{extrap} is a |
64 ## number, then replace values beyond the endpoints with that number. When | |
18606
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
65 ## unspecified, @var{extrap} defaults to @code{NA}. |
5837 | 66 ## |
18417 | 67 ## If the string argument @qcode{"pp"} is specified, then @var{xi} should not |
68 ## be supplied and @code{interp1} returns a piecewise polynomial object. This | |
69 ## object can later be used with @code{ppval} to evaluate the interpolation. | |
5837 | 70 ## There is an equivalence, such that @code{ppval (interp1 (@var{x}, |
17281
bc924baa2c4e
doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents:
17174
diff
changeset
|
71 ## @var{y}, @var{method}, @qcode{"pp"}), @var{xi}) == interp1 (@var{x}, @var{y}, |
bc924baa2c4e
doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents:
17174
diff
changeset
|
72 ## @var{xi}, @var{method}, @qcode{"extrap"})}. |
5837 | 73 ## |
10711
fbd7843974fa
Periodic grammar check of documentation files to ensure common format.
Rik <octave@nomad.inbox5.com>
parents:
10549
diff
changeset
|
74 ## Duplicate points in @var{x} specify a discontinuous interpolant. There |
15218
94d512d712e3
Modified interp1.m file to check whether X has distinct values or not.
Ben Abbott <bpabbott@mac.com>
parents:
15193
diff
changeset
|
75 ## may be at most 2 consecutive points with the same value. |
94d512d712e3
Modified interp1.m file to check whether X has distinct values or not.
Ben Abbott <bpabbott@mac.com>
parents:
15193
diff
changeset
|
76 ## If @var{x} is increasing, the default discontinuous interpolant is |
16816
12005245b645
doc: Periodic grammarcheck of documentation.
Rik <rik@octave.org>
parents:
15468
diff
changeset
|
77 ## right-continuous. If @var{x} is decreasing, the default discontinuous |
15218
94d512d712e3
Modified interp1.m file to check whether X has distinct values or not.
Ben Abbott <bpabbott@mac.com>
parents:
15193
diff
changeset
|
78 ## interpolant is left-continuous. |
94d512d712e3
Modified interp1.m file to check whether X has distinct values or not.
Ben Abbott <bpabbott@mac.com>
parents:
15193
diff
changeset
|
79 ## The continuity condition of the interpolant may be specified by using |
18417 | 80 ## the options, @qcode{"left"} or @qcode{"right"}, to select a left-continuous |
15218
94d512d712e3
Modified interp1.m file to check whether X has distinct values or not.
Ben Abbott <bpabbott@mac.com>
parents:
15193
diff
changeset
|
81 ## or right-continuous interpolant, respectively. |
17281
bc924baa2c4e
doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents:
17174
diff
changeset
|
82 ## Discontinuous interpolation is only allowed for @qcode{"nearest"} and |
bc924baa2c4e
doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents:
17174
diff
changeset
|
83 ## @qcode{"linear"} methods; in all other cases, the @var{x}-values must be |
bc924baa2c4e
doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents:
17174
diff
changeset
|
84 ## unique. |
9929
45c08d7c2c79
allow discontinuous interpolant in interp1
Jaroslav Hajek <highegg@gmail.com>
parents:
9769
diff
changeset
|
85 ## |
5837 | 86 ## An example of the use of @code{interp1} is |
87 ## | |
88 ## @example | |
89 ## @group | |
8507 | 90 ## xf = [0:0.05:10]; |
91 ## yf = sin (2*pi*xf/5); | |
92 ## xp = [0:10]; | |
93 ## yp = sin (2*pi*xp/5); | |
94 ## lin = interp1 (xp, yp, xf); | |
18606
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
95 ## near = interp1 (xp, yp, xf, "nearest"); |
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
96 ## pch = interp1 (xp, yp, xf, "pchip"); |
8507 | 97 ## spl = interp1 (xp, yp, xf, "spline"); |
18606
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
98 ## plot (xf,yf,"r", xf,near,"g", xf,lin,"b", xf,pch,"c", xf,spl,"m", |
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
99 ## xp,yp,"r*"); |
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
100 ## legend ("original", "nearest", "linear", "pchip", "spline"); |
5837 | 101 ## @end group |
102 ## @end example | |
103 ## | |
18606
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
104 ## @seealso{pchip, spline, interpft, interp2, interp3, interpn} |
5837 | 105 ## @end deftypefn |
106 | |
5838 | 107 ## Author: Paul Kienzle |
108 ## Date: 2000-03-25 | |
5837 | 109 ## added 'nearest' as suggested by Kai Habel |
110 ## 2000-07-17 Paul Kienzle | |
111 ## added '*' methods and matrix y | |
112 ## check for proper table lengths | |
113 ## 2002-01-23 Paul Kienzle | |
114 ## fixed extrapolation | |
115 | |
5838 | 116 function yi = interp1 (x, y, varargin) |
5837 | 117 |
10820
c44c786f87ba
interp1.m: When absent set X equal to the inices of Y.
Ben Abbott <bpabbott@mac.com>
parents:
10793
diff
changeset
|
118 if (nargin < 2 || nargin > 6) |
5837 | 119 print_usage (); |
120 endif | |
121 | |
122 method = "linear"; | |
6742 | 123 extrap = NA; |
5837 | 124 xi = []; |
12608
59e2460acae1
make piecewise polynomial (pp) functions more compatible
Kai Habel <kai.habel@gmx.de>
parents:
12459
diff
changeset
|
125 ispp = false; |
5837 | 126 firstnumeric = true; |
18417 | 127 rightcontinuous = NaN; |
5837 | 128 |
129 if (nargin > 2) | |
5838 | 130 for i = 1:length (varargin) |
5837 | 131 arg = varargin{i}; |
5838 | 132 if (ischar (arg)) |
10549 | 133 arg = tolower (arg); |
18606
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
134 switch (arg) |
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
135 case "extrap" |
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
136 extrap = "extrap"; |
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
137 case "pp" |
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
138 ispp = true; |
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
139 case {"right", "-right"} |
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
140 rightcontinuous = true; |
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
141 case {"left", "-left"} |
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
142 rightcontinuous = false; |
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
143 otherwise |
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
144 method = arg; |
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
145 endswitch |
5837 | 146 else |
10549 | 147 if (firstnumeric) |
148 xi = arg; | |
149 firstnumeric = false; | |
150 else | |
151 extrap = arg; | |
152 endif | |
5837 | 153 endif |
154 endfor | |
155 endif | |
156 | |
12608
59e2460acae1
make piecewise polynomial (pp) functions more compatible
Kai Habel <kai.habel@gmx.de>
parents:
12459
diff
changeset
|
157 if (isempty (xi) && firstnumeric && ! ispp) |
10820
c44c786f87ba
interp1.m: When absent set X equal to the inices of Y.
Ben Abbott <bpabbott@mac.com>
parents:
10793
diff
changeset
|
158 xi = y; |
c44c786f87ba
interp1.m: When absent set X equal to the inices of Y.
Ben Abbott <bpabbott@mac.com>
parents:
10793
diff
changeset
|
159 y = x; |
17088
c8586e6fc60d
interp1.m: Fix interpolation on ND-arrays (bug #35860)
Mike Miller <mtmiller@ieee.org>
parents:
17087
diff
changeset
|
160 if (isvector (y)) |
c8586e6fc60d
interp1.m: Fix interpolation on ND-arrays (bug #35860)
Mike Miller <mtmiller@ieee.org>
parents:
17087
diff
changeset
|
161 x = 1:numel (y); |
c8586e6fc60d
interp1.m: Fix interpolation on ND-arrays (bug #35860)
Mike Miller <mtmiller@ieee.org>
parents:
17087
diff
changeset
|
162 else |
c8586e6fc60d
interp1.m: Fix interpolation on ND-arrays (bug #35860)
Mike Miller <mtmiller@ieee.org>
parents:
17087
diff
changeset
|
163 x = 1:rows (y); |
c8586e6fc60d
interp1.m: Fix interpolation on ND-arrays (bug #35860)
Mike Miller <mtmiller@ieee.org>
parents:
17087
diff
changeset
|
164 endif |
10820
c44c786f87ba
interp1.m: When absent set X equal to the inices of Y.
Ben Abbott <bpabbott@mac.com>
parents:
10793
diff
changeset
|
165 endif |
c44c786f87ba
interp1.m: When absent set X equal to the inices of Y.
Ben Abbott <bpabbott@mac.com>
parents:
10793
diff
changeset
|
166 |
5837 | 167 ## reshape matrices for convenience |
168 x = x(:); | |
9754
4219e5cf773d
improve interp1 and pchip
Jaroslav Hajek <highegg@gmail.com>
parents:
9070
diff
changeset
|
169 nx = rows (x); |
9769
9a1c4fe44af8
small interp1 simplification
Jaroslav Hajek <highegg@gmail.com>
parents:
9754
diff
changeset
|
170 szx = size (xi); |
9754
4219e5cf773d
improve interp1 and pchip
Jaroslav Hajek <highegg@gmail.com>
parents:
9070
diff
changeset
|
171 if (isvector (y)) |
5838 | 172 y = y(:); |
5837 | 173 endif |
13141
e81ddf9cacd5
maint: untabify and remove trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
12608
diff
changeset
|
174 |
5838 | 175 szy = size (y); |
9754
4219e5cf773d
improve interp1 and pchip
Jaroslav Hajek <highegg@gmail.com>
parents:
9070
diff
changeset
|
176 y = y(:,:); |
4219e5cf773d
improve interp1 and pchip
Jaroslav Hajek <highegg@gmail.com>
parents:
9070
diff
changeset
|
177 [ny, nc] = size (y); |
5837 | 178 xi = xi(:); |
179 | |
180 ## determine sizes | |
181 if (nx < 2 || ny < 2) | |
18606
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
182 error ("interp1: minimum of 2 points required in each dimension"); |
5837 | 183 endif |
184 | |
9754
4219e5cf773d
improve interp1 and pchip
Jaroslav Hajek <highegg@gmail.com>
parents:
9070
diff
changeset
|
185 ## check whether x is sorted; sort if not. |
9929
45c08d7c2c79
allow discontinuous interpolant in interp1
Jaroslav Hajek <highegg@gmail.com>
parents:
9769
diff
changeset
|
186 if (! issorted (x, "either")) |
9754
4219e5cf773d
improve interp1 and pchip
Jaroslav Hajek <highegg@gmail.com>
parents:
9070
diff
changeset
|
187 [x, p] = sort (x); |
4219e5cf773d
improve interp1 and pchip
Jaroslav Hajek <highegg@gmail.com>
parents:
9070
diff
changeset
|
188 y = y(p,:); |
5837 | 189 endif |
5838 | 190 |
18417 | 191 if (isnan (rightcontinuous)) |
15218
94d512d712e3
Modified interp1.m file to check whether X has distinct values or not.
Ben Abbott <bpabbott@mac.com>
parents:
15193
diff
changeset
|
192 ## If not specified, set the continuity condition |
94d512d712e3
Modified interp1.m file to check whether X has distinct values or not.
Ben Abbott <bpabbott@mac.com>
parents:
15193
diff
changeset
|
193 if (x(end) < x(1)) |
94d512d712e3
Modified interp1.m file to check whether X has distinct values or not.
Ben Abbott <bpabbott@mac.com>
parents:
15193
diff
changeset
|
194 rightcontinuous = false; |
94d512d712e3
Modified interp1.m file to check whether X has distinct values or not.
Ben Abbott <bpabbott@mac.com>
parents:
15193
diff
changeset
|
195 else |
94d512d712e3
Modified interp1.m file to check whether X has distinct values or not.
Ben Abbott <bpabbott@mac.com>
parents:
15193
diff
changeset
|
196 rightcontinuous = true; |
17306
09543e9c8f40
Use explicit form of end (endif, endfor, etc.) in core m-files.
Rik <rik@octave.org>
parents:
17281
diff
changeset
|
197 endif |
18642
a07814a8ffb0
interp1.m: Small formatting changes only.
Rik <rik@octave.org>
parents:
18635
diff
changeset
|
198 elseif ((rightcontinuous && (x(end) < x(1))) |
a07814a8ffb0
interp1.m: Small formatting changes only.
Rik <rik@octave.org>
parents:
18635
diff
changeset
|
199 || (! rightcontinuous && (x(end) > x(1)))) |
15218
94d512d712e3
Modified interp1.m file to check whether X has distinct values or not.
Ben Abbott <bpabbott@mac.com>
parents:
15193
diff
changeset
|
200 ## Switch between left-continuous and right-continuous |
94d512d712e3
Modified interp1.m file to check whether X has distinct values or not.
Ben Abbott <bpabbott@mac.com>
parents:
15193
diff
changeset
|
201 x = flipud (x); |
94d512d712e3
Modified interp1.m file to check whether X has distinct values or not.
Ben Abbott <bpabbott@mac.com>
parents:
15193
diff
changeset
|
202 y = flipud (y); |
17306
09543e9c8f40
Use explicit form of end (endif, endfor, etc.) in core m-files.
Rik <rik@octave.org>
parents:
17281
diff
changeset
|
203 endif |
15218
94d512d712e3
Modified interp1.m file to check whether X has distinct values or not.
Ben Abbott <bpabbott@mac.com>
parents:
15193
diff
changeset
|
204 |
9754
4219e5cf773d
improve interp1 and pchip
Jaroslav Hajek <highegg@gmail.com>
parents:
9070
diff
changeset
|
205 starmethod = method(1) == "*"; |
4219e5cf773d
improve interp1 and pchip
Jaroslav Hajek <highegg@gmail.com>
parents:
9070
diff
changeset
|
206 |
4219e5cf773d
improve interp1 and pchip
Jaroslav Hajek <highegg@gmail.com>
parents:
9070
diff
changeset
|
207 if (starmethod) |
4219e5cf773d
improve interp1 and pchip
Jaroslav Hajek <highegg@gmail.com>
parents:
9070
diff
changeset
|
208 dx = x(2) - x(1); |
4219e5cf773d
improve interp1 and pchip
Jaroslav Hajek <highegg@gmail.com>
parents:
9070
diff
changeset
|
209 else |
15218
94d512d712e3
Modified interp1.m file to check whether X has distinct values or not.
Ben Abbott <bpabbott@mac.com>
parents:
15193
diff
changeset
|
210 jumps = x(1:end-1) == x(2:end); |
9929
45c08d7c2c79
allow discontinuous interpolant in interp1
Jaroslav Hajek <highegg@gmail.com>
parents:
9769
diff
changeset
|
211 have_jumps = any (jumps); |
45c08d7c2c79
allow discontinuous interpolant in interp1
Jaroslav Hajek <highegg@gmail.com>
parents:
9769
diff
changeset
|
212 if (have_jumps) |
18417 | 213 if (strcmp (method, "linear") || strcmp (method, ("nearest"))) |
9929
45c08d7c2c79
allow discontinuous interpolant in interp1
Jaroslav Hajek <highegg@gmail.com>
parents:
9769
diff
changeset
|
214 if (any (jumps(1:nx-2) & jumps(2:nx-1))) |
18418
1ad77b3e6bef
interp1.m: Demote error to warning about multiple discontinuties (bug #41386).
Rik <rik@octave.org>
parents:
18417
diff
changeset
|
215 warning ("interp1: multiple discontinuities at the same X value"); |
9929
45c08d7c2c79
allow discontinuous interpolant in interp1
Jaroslav Hajek <highegg@gmail.com>
parents:
9769
diff
changeset
|
216 endif |
45c08d7c2c79
allow discontinuous interpolant in interp1
Jaroslav Hajek <highegg@gmail.com>
parents:
9769
diff
changeset
|
217 else |
18642
a07814a8ffb0
interp1.m: Small formatting changes only.
Rik <rik@octave.org>
parents:
18635
diff
changeset
|
218 error ("interp1: discontinuities not supported for method '%s'", |
a07814a8ffb0
interp1.m: Small formatting changes only.
Rik <rik@octave.org>
parents:
18635
diff
changeset
|
219 method); |
9929
45c08d7c2c79
allow discontinuous interpolant in interp1
Jaroslav Hajek <highegg@gmail.com>
parents:
9769
diff
changeset
|
220 endif |
5837 | 221 endif |
222 endif | |
223 | |
9754
4219e5cf773d
improve interp1 and pchip
Jaroslav Hajek <highegg@gmail.com>
parents:
9070
diff
changeset
|
224 ## Proceed with interpolating by all methods. |
4219e5cf773d
improve interp1 and pchip
Jaroslav Hajek <highegg@gmail.com>
parents:
9070
diff
changeset
|
225 switch (method) |
18417 | 226 |
17174
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
227 case "nearest" |
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
228 pp = mkpp ([x(1); (x(1:nx-1)+x(2:nx))/2; x(nx)], |
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
229 shiftdim (y, 1), szy(2:end)); |
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
230 pp.orient = "first"; |
13141
e81ddf9cacd5
maint: untabify and remove trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
12608
diff
changeset
|
231 |
17174
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
232 if (ispp) |
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
233 yi = pp; |
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
234 else |
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
235 yi = ppval (pp, reshape (xi, szx)); |
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
236 endif |
18417 | 237 |
17174
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
238 case "*nearest" |
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
239 pp = mkpp ([x(1), x(1)+[0.5:(nx-1)]*dx, x(nx)], |
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
240 shiftdim (y, 1), szy(2:end)); |
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
241 pp.orient = "first"; |
18642
a07814a8ffb0
interp1.m: Small formatting changes only.
Rik <rik@octave.org>
parents:
18635
diff
changeset
|
242 |
17174
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
243 if (ispp) |
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
244 yi = pp; |
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
245 else |
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
246 yi = ppval (pp, reshape (xi, szx)); |
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
247 endif |
18417 | 248 |
17174
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
249 case "linear" |
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
250 xx = x; |
18633
5fe907167520
interp1.m: fix function for inputs w/multiple discontinuities (bug #41980).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
18418
diff
changeset
|
251 nxx = nx; |
18415
b06675ef40f2
interp1.m: Fix handling multi-column y-input with jumps (bug #40825).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
17744
diff
changeset
|
252 yy = y; |
18633
5fe907167520
interp1.m: fix function for inputs w/multiple discontinuities (bug #41980).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
18418
diff
changeset
|
253 dy = diff (yy); |
17174
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
254 if (have_jumps) |
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
255 ## Omit zero-size intervals. |
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
256 xx(jumps) = []; |
18415
b06675ef40f2
interp1.m: Fix handling multi-column y-input with jumps (bug #40825).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
17744
diff
changeset
|
257 nxx = rows (xx); |
18633
5fe907167520
interp1.m: fix function for inputs w/multiple discontinuities (bug #41980).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
18418
diff
changeset
|
258 yy(jumps, :) = []; |
5fe907167520
interp1.m: fix function for inputs w/multiple discontinuities (bug #41980).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
18418
diff
changeset
|
259 dy(jumps, :) = []; |
17174
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
260 endif |
12608
59e2460acae1
make piecewise polynomial (pp) functions more compatible
Kai Habel <kai.habel@gmx.de>
parents:
12459
diff
changeset
|
261 |
18415
b06675ef40f2
interp1.m: Fix handling multi-column y-input with jumps (bug #40825).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
17744
diff
changeset
|
262 dx = diff (xx); |
b06675ef40f2
interp1.m: Fix handling multi-column y-input with jumps (bug #40825).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
17744
diff
changeset
|
263 dx = repmat (dx, [1 size(dy)(2:end)]); |
b06675ef40f2
interp1.m: Fix handling multi-column y-input with jumps (bug #40825).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
17744
diff
changeset
|
264 |
18633
5fe907167520
interp1.m: fix function for inputs w/multiple discontinuities (bug #41980).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
18418
diff
changeset
|
265 coefs = [(dy./dx).', yy(1:nxx-1, :).']; |
18415
b06675ef40f2
interp1.m: Fix handling multi-column y-input with jumps (bug #40825).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
17744
diff
changeset
|
266 |
17174
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
267 pp = mkpp (xx, coefs, szy(2:end)); |
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
268 pp.orient = "first"; |
12608
59e2460acae1
make piecewise polynomial (pp) functions more compatible
Kai Habel <kai.habel@gmx.de>
parents:
12459
diff
changeset
|
269 |
17174
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
270 if (ispp) |
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
271 yi = pp; |
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
272 else |
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
273 yi = ppval (pp, reshape (xi, szx)); |
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
274 endif |
12608
59e2460acae1
make piecewise polynomial (pp) functions more compatible
Kai Habel <kai.habel@gmx.de>
parents:
12459
diff
changeset
|
275 |
17174
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
276 case "*linear" |
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
277 dy = diff (y); |
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
278 coefs = [(dy/dx).'(:), y(1:nx-1, :).'(:)]; |
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
279 pp = mkpp (x, coefs, szy(2:end)); |
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
280 pp.orient = "first"; |
12608
59e2460acae1
make piecewise polynomial (pp) functions more compatible
Kai Habel <kai.habel@gmx.de>
parents:
12459
diff
changeset
|
281 |
17174
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
282 if (ispp) |
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
283 yi = pp; |
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
284 else |
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
285 yi = ppval (pp, reshape (xi, szx)); |
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
286 endif |
5837 | 287 |
17174
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
288 case {"pchip", "*pchip", "cubic", "*cubic"} |
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
289 if (nx == 2 || starmethod) |
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
290 x = linspace (x(1), x(nx), ny); |
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
291 endif |
13141
e81ddf9cacd5
maint: untabify and remove trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
12608
diff
changeset
|
292 |
17174
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
293 if (ispp) |
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
294 y = shiftdim (reshape (y, szy), 1); |
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
295 yi = pchip (x, y); |
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
296 yi.orient = "first"; |
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
297 else |
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
298 y = shiftdim (y, 1); |
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
299 yi = pchip (x, y, reshape (xi, szx)); |
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
300 if (! isvector (y)) |
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
301 yi = shiftdim (yi, 1); |
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
302 endif |
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
303 endif |
18417 | 304 |
17174
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
305 case {"spline", "*spline"} |
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
306 if (nx == 2 || starmethod) |
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
307 x = linspace (x(1), x(nx), ny); |
14492
7ce925166af6
Fix inconsistent orientation of output matrix for interp1.
Olaf Till <i7tiol@t-online.de>
parents:
14363
diff
changeset
|
308 endif |
13141
e81ddf9cacd5
maint: untabify and remove trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
12608
diff
changeset
|
309 |
17174
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
310 if (ispp) |
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
311 y = shiftdim (reshape (y, szy), 1); |
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
312 yi = spline (x, y); |
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
313 yi.orient = "first"; |
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
314 else |
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
315 y = shiftdim (y, 1); |
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
316 yi = spline (x, y, reshape (xi, szx)); |
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
317 if (! isvector (y)) |
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
318 yi = shiftdim (yi, 1); |
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
319 endif |
14492
7ce925166af6
Fix inconsistent orientation of output matrix for interp1.
Olaf Till <i7tiol@t-online.de>
parents:
14363
diff
changeset
|
320 endif |
18417 | 321 |
17174
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
322 otherwise |
c3c1ebfaa7dc
maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents:
17088
diff
changeset
|
323 error ("interp1: invalid method '%s'", method); |
18417 | 324 |
9754
4219e5cf773d
improve interp1 and pchip
Jaroslav Hajek <highegg@gmail.com>
parents:
9070
diff
changeset
|
325 endswitch |
5837 | 326 |
18606
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
327 if (! ispp && isnumeric (extrap)) |
18417 | 328 ## determine which values are out of range and set them to extrap, |
329 ## unless extrap == "extrap". | |
330 minx = min (x(1), x(nx)); | |
331 maxx = max (x(1), x(nx)); | |
9754
4219e5cf773d
improve interp1 and pchip
Jaroslav Hajek <highegg@gmail.com>
parents:
9070
diff
changeset
|
332 |
18606
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
333 outliers = xi < minx | ! (xi <= maxx); # this even catches NaNs |
18417 | 334 if (size_equal (outliers, yi)) |
335 yi(outliers) = extrap; | |
336 yi = reshape (yi, szx); | |
337 elseif (! isvector (yi)) | |
338 yi(outliers, :) = extrap; | |
339 else | |
340 yi(outliers.') = extrap; | |
9754
4219e5cf773d
improve interp1 and pchip
Jaroslav Hajek <highegg@gmail.com>
parents:
9070
diff
changeset
|
341 endif |
5837 | 342 endif |
343 | |
344 endfunction | |
345 | |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
346 |
5837 | 347 %!demo |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
348 %! clf; |
14363
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
349 %! xf = 0:0.05:10; yf = sin (2*pi*xf/5); |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
350 %! xp = 0:10; yp = sin (2*pi*xp/5); |
18606
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
351 %! lin = interp1 (xp,yp,xf, 'linear'); |
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
352 %! spl = interp1 (xp,yp,xf, 'spline'); |
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
353 %! pch = interp1 (xp,yp,xf, 'pchip'); |
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
354 %! near= interp1 (xp,yp,xf, 'nearest'); |
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
355 %! plot (xf,yf,'r',xf,near,'g',xf,lin,'b',xf,pch,'c',xf,spl,'m',xp,yp,'r*'); |
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
356 %! legend ('original', 'nearest', 'linear', 'pchip', 'spline'); |
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
357 %! title ('Interpolation of continuous function sin (x) w/various methods'); |
5837 | 358 %! %-------------------------------------------------------- |
359 %! % confirm that interpolated function matches the original | |
360 | |
361 %!demo | |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
362 %! clf; |
14363
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
363 %! xf = 0:0.05:10; yf = sin (2*pi*xf/5); |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
364 %! xp = 0:10; yp = sin (2*pi*xp/5); |
18606
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
365 %! lin = interp1 (xp,yp,xf, '*linear'); |
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
366 %! spl = interp1 (xp,yp,xf, '*spline'); |
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
367 %! pch = interp1 (xp,yp,xf, '*pchip'); |
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
368 %! near= interp1 (xp,yp,xf, '*nearest'); |
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
369 %! plot (xf,yf,'r',xf,near,'g',xf,lin,'b',xf,pch,'c',xf,spl,'m',xp,yp,'r*'); |
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
370 %! legend ('*original', '*nearest', '*linear', '*pchip', '*spline'); |
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
371 %! title ('Interpolation of continuous function sin (x) w/various *methods'); |
5837 | 372 %! %-------------------------------------------------------- |
373 %! % confirm that interpolated function matches the original | |
374 | |
6721 | 375 %!demo |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
376 %! clf; |
18606
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
377 %! fstep = @(x) x > 1; |
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
378 %! xf = 0:0.05:2; yf = fstep (xf); |
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
379 %! xp = linspace (0,2,10); yp = fstep (xp); |
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
380 %! pch = interp1 (xp,yp,xf, 'pchip'); |
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
381 %! spl = interp1 (xp,yp,xf, 'spline'); |
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
382 %! plot (xf,yf,'r',xf,pch,'b',xf,spl,'m',xp,yp,'r*'); |
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
383 %! title ({'Interpolation of step function with discontinuity at x==1', ... |
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
384 %! 'Note: "pchip" is shape-preserving, "spline" (continuous 1st, 2nd derivatives) is not'}); |
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
385 %! legend ('original', 'pchip', 'spline'); |
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
386 |
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
387 %!demo |
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
388 %! clf; |
6721 | 389 %! t = 0 : 0.3 : pi; dt = t(2)-t(1); |
390 %! n = length (t); k = 100; dti = dt*n/k; | |
391 %! ti = t(1) + [0 : k-1]*dti; | |
392 %! y = sin (4*t + 0.3) .* cos (3*t - 0.1); | |
18606
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
393 %! ddys = diff (diff (interp1 (t,y,ti, 'spline'))./dti)./dti; |
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
394 %! ddyp = diff (diff (interp1 (t,y,ti, 'pchip')) ./dti)./dti; |
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
395 %! ddyc = diff (diff (interp1 (t,y,ti, 'cubic')) ./dti)./dti; |
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
396 %! plot (ti(2:end-1),ddys,'b*', ti(2:end-1),ddyp,'c^', ti(2:end-1),ddyc,'g+'); |
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
397 %! title ({'Second derivative of interpolated "sin (4*t + 0.3) .* cos (3*t - 0.1)"', ... |
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
398 %! 'Note: "spline" has continous 2nd derivative, others do not'}); |
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
399 %! legend ('spline', 'pchip', 'cubic'); |
6721 | 400 |
9929
45c08d7c2c79
allow discontinuous interpolant in interp1
Jaroslav Hajek <highegg@gmail.com>
parents:
9769
diff
changeset
|
401 %!demo |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
402 %! clf; |
14363
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
403 %! xf = 0:0.05:10; yf = sin (2*pi*xf/5) - (xf >= 5); |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
404 %! xp = [0:.5:4.5,4.99,5:.5:10]; yp = sin (2*pi*xp/5) - (xp >= 5); |
18606
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
405 %! lin = interp1 (xp,yp,xf, 'linear'); |
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
406 %! near= interp1 (xp,yp,xf, 'nearest'); |
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
407 %! plot (xf,yf,'r', xf,near,'g', xf,lin,'b', xp,yp,'r*'); |
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
408 %! legend ('original', 'nearest', 'linear'); |
9929
45c08d7c2c79
allow discontinuous interpolant in interp1
Jaroslav Hajek <highegg@gmail.com>
parents:
9769
diff
changeset
|
409 %! %-------------------------------------------------------- |
45c08d7c2c79
allow discontinuous interpolant in interp1
Jaroslav Hajek <highegg@gmail.com>
parents:
9769
diff
changeset
|
410 %! % confirm that interpolated function matches the original |
45c08d7c2c79
allow discontinuous interpolant in interp1
Jaroslav Hajek <highegg@gmail.com>
parents:
9769
diff
changeset
|
411 |
15218
94d512d712e3
Modified interp1.m file to check whether X has distinct values or not.
Ben Abbott <bpabbott@mac.com>
parents:
15193
diff
changeset
|
412 %!demo |
94d512d712e3
Modified interp1.m file to check whether X has distinct values or not.
Ben Abbott <bpabbott@mac.com>
parents:
15193
diff
changeset
|
413 %! clf; |
94d512d712e3
Modified interp1.m file to check whether X has distinct values or not.
Ben Abbott <bpabbott@mac.com>
parents:
15193
diff
changeset
|
414 %! x = 0:0.5:3; |
94d512d712e3
Modified interp1.m file to check whether X has distinct values or not.
Ben Abbott <bpabbott@mac.com>
parents:
15193
diff
changeset
|
415 %! x1 = [3 2 2 1]; |
94d512d712e3
Modified interp1.m file to check whether X has distinct values or not.
Ben Abbott <bpabbott@mac.com>
parents:
15193
diff
changeset
|
416 %! x2 = [1 2 2 3]; |
94d512d712e3
Modified interp1.m file to check whether X has distinct values or not.
Ben Abbott <bpabbott@mac.com>
parents:
15193
diff
changeset
|
417 %! y1 = [1 1 0 0]; |
94d512d712e3
Modified interp1.m file to check whether X has distinct values or not.
Ben Abbott <bpabbott@mac.com>
parents:
15193
diff
changeset
|
418 %! y2 = [0 0 1 1]; |
94d512d712e3
Modified interp1.m file to check whether X has distinct values or not.
Ben Abbott <bpabbott@mac.com>
parents:
15193
diff
changeset
|
419 %! h = plot (x, interp1 (x1, y1, x), 'b', x1, y1, 'sb'); |
94d512d712e3
Modified interp1.m file to check whether X has distinct values or not.
Ben Abbott <bpabbott@mac.com>
parents:
15193
diff
changeset
|
420 %! hold on |
94d512d712e3
Modified interp1.m file to check whether X has distinct values or not.
Ben Abbott <bpabbott@mac.com>
parents:
15193
diff
changeset
|
421 %! g = plot (x, interp1 (x2, y2, x), 'r', x2, y2, '*r'); |
18417 | 422 %! axis ([0.5 3.5 -0.5 1.5]) |
423 %! legend ([h(1), g(1)], {'left-continuous', 'right-continuous'}, ... | |
424 %! 'location', 'northwest') | |
15218
94d512d712e3
Modified interp1.m file to check whether X has distinct values or not.
Ben Abbott <bpabbott@mac.com>
parents:
15193
diff
changeset
|
425 %! legend boxoff |
94d512d712e3
Modified interp1.m file to check whether X has distinct values or not.
Ben Abbott <bpabbott@mac.com>
parents:
15193
diff
changeset
|
426 %! %-------------------------------------------------------- |
18417 | 427 %! % red curve is left-continuous and blue is right-continuous at x = 2 |
15218
94d512d712e3
Modified interp1.m file to check whether X has distinct values or not.
Ben Abbott <bpabbott@mac.com>
parents:
15193
diff
changeset
|
428 |
18606
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
429 ##FIXME: add test for N-d arguments here |
9929
45c08d7c2c79
allow discontinuous interpolant in interp1
Jaroslav Hajek <highegg@gmail.com>
parents:
9769
diff
changeset
|
430 |
6374 | 431 ## For each type of interpolated test, confirm that the interpolated |
432 ## value at the knots match the values at the knots. Points away | |
14359
7277fe922e99
doc: Use Octave preference for double quote in docstrings in scripts/
Rik <octave@nomad.inbox5.com>
parents:
14335
diff
changeset
|
433 ## from the knots are requested, but only "nearest" and "linear" |
6374 | 434 ## confirm they are the correct values. |
435 | |
5837 | 436 %!shared xp, yp, xi, style |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
437 %! xp = 0:2:10; |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
438 %! yp = sin (2*pi*xp/5); |
6374 | 439 %! xi = [-1, 0, 2.2, 4, 6.6, 10, 11]; |
440 | |
441 ## The following BLOCK/ENDBLOCK section is repeated for each style | |
442 ## nearest, linear, cubic, spline, pchip | |
443 ## The test for ppval of cubic has looser tolerance, but otherwise | |
444 ## the tests are identical. | |
445 ## Note that the block checks style and *style; if you add more tests | |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
446 ## be sure to add them to both sections of each block. One test, |
6374 | 447 ## style vs. *style, occurs only in the first section. |
448 ## There is an ENDBLOCKTEST after the final block | |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
449 |
5837 | 450 %!test style = "nearest"; |
6374 | 451 ## BLOCK |
14363
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
452 %!assert (interp1 (xp, yp, [min(xp)-1, max(xp)+1],style), [NA, NA]) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
453 %!assert (interp1 (xp,yp,xp,style), yp, 100*eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
454 %!assert (interp1 (xp,yp,xp',style), yp', 100*eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
455 %!assert (interp1 (xp',yp',xp',style), yp', 100*eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
456 %!assert (interp1 (xp',yp',xp,style), yp, 100*eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
457 %!assert (isempty (interp1 (xp',yp',[],style))) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
458 %!assert (isempty (interp1 (xp,yp,[],style))) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
459 %!assert (interp1 (xp,[yp',yp'],xi(:),style),... |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
460 %! [interp1(xp,yp,xi(:),style),interp1(xp,yp,xi(:),style)]) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
461 %!assert (interp1 (xp,yp,xi,style),... |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
462 %! interp1 (fliplr (xp),fliplr (yp),xi,style),100*eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
463 %!assert (ppval (interp1 (xp,yp,style,"pp"),xi), |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
464 %! interp1 (xp,yp,xi,style,"extrap"),10*eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
465 %!error interp1 (1,1,1, style) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
466 %!assert (interp1 (xp,[yp',yp'],xi,style), |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
467 %! interp1 (xp,[yp',yp'],xi,["*",style]),100*eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
468 %!test style = ["*",style]; |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
469 %!assert (interp1 (xp, yp, [min(xp)-1, max(xp)+1],style), [NA, NA]) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
470 %!assert (interp1 (xp,yp,xp,style), yp, 100*eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
471 %!assert (interp1 (xp,yp,xp',style), yp', 100*eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
472 %!assert (interp1 (xp',yp',xp',style), yp', 100*eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
473 %!assert (interp1 (xp',yp',xp,style), yp, 100*eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
474 %!assert (isempty (interp1 (xp',yp',[],style))) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
475 %!assert (isempty (interp1 (xp,yp,[],style))) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
476 %!assert (interp1 (xp,[yp',yp'],xi(:),style),... |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
477 %! [interp1(xp,yp,xi(:),style),interp1(xp,yp,xi(:),style)]) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
478 %!assert (interp1 (xp,yp,xi,style),... |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
479 %! interp1 (fliplr (xp),fliplr (yp),xi,style),100*eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
480 %!assert (ppval (interp1 (xp,yp,style,"pp"),xi), |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
481 %! interp1 (xp,yp,xi,style,"extrap"),10*eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
482 %!error interp1 (1,1,1, style) |
6374 | 483 ## ENDBLOCK |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
484 |
14363
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
485 %!test style = "linear"; |
6374 | 486 ## BLOCK |
14363
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
487 %!assert (interp1 (xp, yp, [min(xp)-1, max(xp)+1],style), [NA, NA]) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
488 %!assert (interp1 (xp,yp,xp,style), yp, 100*eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
489 %!assert (interp1 (xp,yp,xp',style), yp', 100*eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
490 %!assert (interp1 (xp',yp',xp',style), yp', 100*eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
491 %!assert (interp1 (xp',yp',xp,style), yp, 100*eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
492 %!assert (isempty (interp1 (xp',yp',[],style))) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
493 %!assert (isempty (interp1 (xp,yp,[],style))) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
494 %!assert (interp1 (xp,[yp',yp'],xi(:),style),... |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
495 %! [interp1(xp,yp,xi(:),style),interp1(xp,yp,xi(:),style)]) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
496 %!assert (interp1 (xp,yp,xi,style),... |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
497 %! interp1 (fliplr (xp),fliplr (yp),xi,style),100*eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
498 %!assert (ppval (interp1 (xp,yp,style,"pp"),xi), |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
499 %! interp1 (xp,yp,xi,style,"extrap"),10*eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
500 %!error interp1 (1,1,1, style) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
501 %!assert (interp1 (xp,[yp',yp'],xi,style), |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
502 %! interp1 (xp,[yp',yp'],xi,["*",style]),100*eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
503 %!test style = ['*',style]; |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
504 %!assert (interp1 (xp, yp, [min(xp)-1, max(xp)+1],style), [NA, NA]) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
505 %!assert (interp1 (xp,yp,xp,style), yp, 100*eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
506 %!assert (interp1 (xp,yp,xp',style), yp', 100*eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
507 %!assert (interp1 (xp',yp',xp',style), yp', 100*eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
508 %!assert (interp1 (xp',yp',xp,style), yp, 100*eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
509 %!assert (isempty (interp1 (xp',yp',[],style))) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
510 %!assert (isempty (interp1 (xp,yp,[],style))) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
511 %!assert (interp1 (xp,[yp',yp'],xi(:),style),... |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
512 %! [interp1(xp,yp,xi(:),style),interp1(xp,yp,xi(:),style)]) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
513 %!assert (interp1 (xp,yp,xi,style),... |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
514 %! interp1 (fliplr (xp),fliplr (yp),xi,style),100*eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
515 %!assert (ppval (interp1 (xp,yp,style,"pp"),xi), |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
516 %! interp1 (xp,yp,xi,style,"extrap"),10*eps) |
15218
94d512d712e3
Modified interp1.m file to check whether X has distinct values or not.
Ben Abbott <bpabbott@mac.com>
parents:
15193
diff
changeset
|
517 %!assert (interp1 ([1 2 2 3], [1 2 3 4], 2), 3); |
94d512d712e3
Modified interp1.m file to check whether X has distinct values or not.
Ben Abbott <bpabbott@mac.com>
parents:
15193
diff
changeset
|
518 %!assert (interp1 ([3 2 2 1], [4 3 2 1], 2), 2); |
14363
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
519 %!error interp1 (1,1,1, style) |
6374 | 520 ## ENDBLOCK |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
521 |
14363
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
522 %!test style = "cubic"; |
6374 | 523 ## BLOCK |
14363
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
524 %!assert (interp1 (xp, yp, [min(xp)-1, max(xp)+1],style), [NA, NA]) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
525 %!assert (interp1 (xp,yp,xp,style), yp, 100*eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
526 %!assert (interp1 (xp,yp,xp',style), yp', 100*eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
527 %!assert (interp1 (xp',yp',xp',style), yp', 100*eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
528 %!assert (interp1 (xp',yp',xp,style), yp, 100*eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
529 %!assert (isempty (interp1 (xp',yp',[],style))) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
530 %!assert (isempty (interp1 (xp,yp,[],style))) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
531 %!assert (interp1 (xp,[yp',yp'],xi(:),style),... |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
532 %! [interp1(xp,yp,xi(:),style),interp1(xp,yp,xi(:),style)]) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
533 %!assert (interp1 (xp,yp,xi,style),... |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
534 %! interp1 (fliplr (xp),fliplr (yp),xi,style),100*eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
535 %!assert (ppval (interp1 (xp,yp,style,"pp"),xi), |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
536 %! interp1 (xp,yp,xi,style,"extrap"),100*eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
537 %!error interp1 (1,1,1, style) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
538 %!assert (interp1 (xp,[yp',yp'],xi,style), |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
539 %! interp1 (xp,[yp',yp'],xi,["*",style]),100*eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
540 %!test style = ["*",style]; |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
541 %!assert (interp1 (xp, yp, [min(xp)-1, max(xp)+1],style), [NA, NA]) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
542 %!assert (interp1 (xp,yp,xp,style), yp, 100*eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
543 %!assert (interp1 (xp,yp,xp',style), yp', 100*eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
544 %!assert (interp1 (xp',yp',xp',style), yp', 100*eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
545 %!assert (interp1 (xp',yp',xp,style), yp, 100*eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
546 %!assert (isempty (interp1 (xp',yp',[],style))) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
547 %!assert (isempty (interp1 (xp,yp,[],style))) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
548 %!assert (interp1 (xp,[yp',yp'],xi(:),style),... |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
549 %! [interp1(xp,yp,xi(:),style),interp1(xp,yp,xi(:),style)]) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
550 %!assert (interp1 (xp,yp,xi,style),... |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
551 %! interp1 (fliplr (xp),fliplr (yp),xi,style),100*eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
552 %!assert (ppval (interp1 (xp,yp,style,"pp"),xi), |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
553 %! interp1 (xp,yp,xi,style,"extrap"),100*eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
554 %!error interp1 (1,1,1, style) |
6374 | 555 ## ENDBLOCK |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
556 |
14363
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
557 %!test style = "pchip"; |
6374 | 558 ## BLOCK |
14363
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
559 %!assert (interp1 (xp, yp, [min(xp)-1, max(xp)+1],style), [NA, NA]) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
560 %!assert (interp1 (xp,yp,xp,style), yp, 100*eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
561 %!assert (interp1 (xp,yp,xp',style), yp', 100*eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
562 %!assert (interp1 (xp',yp',xp',style), yp', 100*eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
563 %!assert (interp1 (xp',yp',xp,style), yp, 100*eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
564 %!assert (isempty (interp1 (xp',yp',[],style))) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
565 %!assert (isempty (interp1 (xp,yp,[],style))) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
566 %!assert (interp1 (xp,[yp',yp'],xi(:),style),... |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
567 %! [interp1(xp,yp,xi(:),style),interp1(xp,yp,xi(:),style)]) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
568 %!assert (interp1 (xp,yp,xi,style),... |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
569 %! interp1 (fliplr (xp),fliplr (yp),xi,style),100*eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
570 %!assert (ppval (interp1 (xp,yp,style,"pp"),xi), |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
571 %! interp1 (xp,yp,xi,style,"extrap"),10*eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
572 %!error interp1 (1,1,1, style) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
573 %!assert (interp1 (xp,[yp',yp'],xi,style), |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
574 %! interp1 (xp,[yp',yp'],xi,["*",style]),100*eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
575 %!test style = ["*",style]; |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
576 %!assert (interp1 (xp, yp, [min(xp)-1, max(xp)+1],style), [NA, NA]) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
577 %!assert (interp1 (xp,yp,xp,style), yp, 100*eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
578 %!assert (interp1 (xp,yp,xp',style), yp', 100*eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
579 %!assert (interp1 (xp',yp',xp',style), yp', 100*eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
580 %!assert (interp1 (xp',yp',xp,style), yp, 100*eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
581 %!assert (isempty (interp1 (xp',yp',[],style))) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
582 %!assert (isempty (interp1 (xp,yp,[],style))) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
583 %!assert (interp1 (xp,[yp',yp'],xi(:),style),... |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
584 %! [interp1(xp,yp,xi(:),style),interp1(xp,yp,xi(:),style)]) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
585 %!assert (interp1 (xp,yp,xi,style),... |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
586 %! interp1 (fliplr (xp),fliplr (yp),xi,style),100*eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
587 %!assert (ppval (interp1 (xp,yp,style,"pp"),xi), |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
588 %! interp1 (xp,yp,xi,style,"extrap"),10*eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
589 %!error interp1 (1,1,1, style) |
6374 | 590 ## ENDBLOCK |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
591 |
14363
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
592 %!test style = "spline"; |
6374 | 593 ## BLOCK |
14363
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
594 %!assert (interp1 (xp, yp, [min(xp)-1, max(xp)+1],style), [NA, NA]) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
595 %!assert (interp1 (xp,yp,xp,style), yp, 100*eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
596 %!assert (interp1 (xp,yp,xp',style), yp', 100*eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
597 %!assert (interp1 (xp',yp',xp',style), yp', 100*eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
598 %!assert (interp1 (xp',yp',xp,style), yp, 100*eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
599 %!assert (isempty (interp1 (xp',yp',[],style))) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
600 %!assert (isempty (interp1 (xp,yp,[],style))) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
601 %!assert (interp1 (xp,[yp',yp'],xi(:),style),... |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
602 %! [interp1(xp,yp,xi(:),style),interp1(xp,yp,xi(:),style)]) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
603 %!assert (interp1 (xp,yp,xi,style),... |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
604 %! interp1 (fliplr (xp),fliplr (yp),xi,style),100*eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
605 %!assert (ppval (interp1 (xp,yp,style,"pp"),xi), |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
606 %! interp1 (xp,yp,xi,style,"extrap"),10*eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
607 %!error interp1 (1,1,1, style) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
608 %!assert (interp1 (xp,[yp',yp'],xi,style), |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
609 %! interp1 (xp,[yp',yp'],xi,["*",style]),100*eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
610 %!test style = ["*",style]; |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
611 %!assert (interp1 (xp, yp, [min(xp)-1, max(xp)+1],style), [NA, NA]) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
612 %!assert (interp1 (xp,yp,xp,style), yp, 100*eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
613 %!assert (interp1 (xp,yp,xp',style), yp', 100*eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
614 %!assert (interp1 (xp',yp',xp',style), yp', 100*eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
615 %!assert (interp1 (xp',yp',xp,style), yp, 100*eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
616 %!assert (isempty (interp1 (xp',yp',[],style))) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
617 %!assert (isempty (interp1 (xp,yp,[],style))) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
618 %!assert (interp1 (xp,[yp',yp'],xi(:),style),... |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
619 %! [interp1(xp,yp,xi(:),style),interp1(xp,yp,xi(:),style)]) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
620 %!assert (interp1 (xp,yp,xi,style),... |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
621 %! interp1 (fliplr (xp),fliplr (yp),xi,style),100*eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
622 %!assert (ppval (interp1 (xp,yp,style,"pp"),xi), |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
623 %! interp1 (xp,yp,xi,style,"extrap"),10*eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
624 %!error interp1 (1,1,1, style) |
6374 | 625 ## ENDBLOCK |
626 ## ENDBLOCKTEST | |
5837 | 627 |
18417 | 628 ## test extrapolation (linear) |
14363
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
629 %!assert (interp1 ([1:5],[3:2:11],[0,6],"linear","extrap"), [1, 13], eps) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
630 %!assert (interp1 (xp, yp, [-1, max(xp)+1],"linear",5), [5, 5]) |
5837 | 631 |
18417 | 632 ## Basic sanity checks |
14363
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
633 %!assert (interp1 (1:2,1:2,1.4,"nearest"), 1) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
634 %!assert (interp1 (1:2,1:2,1.4,"linear"), 1.4) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
635 %!assert (interp1 (1:4,1:4,1.4,"cubic"), 1.4) |
18417 | 636 %!assert (interp1 (1:2,1:2,1.1,"spline"), 1.1) |
14363
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
637 %!assert (interp1 (1:3,1:3,1.4,"spline"), 1.4) |
5837 | 638 |
14363
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
639 %!assert (interp1 (1:2:4,1:2:4,1.4,"*nearest"), 1) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
640 %!assert (interp1 (1:2:4,1:2:4,[0,1,1.4,3,4],"*linear"), [NA,1,1.4,3,NA]) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
641 %!assert (interp1 (1:2:8,1:2:8,1.4,"*cubic"), 1.4) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
642 %!assert (interp1 (1:2,1:2,1.3, "*spline"), 1.3) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
643 %!assert (interp1 (1:2:6,1:2:6,1.4,"*spline"), 1.4) |
7671
4fbaba9abec1
implement compiled binary lookup
Jaroslav Hajek <highegg@gmail.com>
parents:
7017
diff
changeset
|
644 |
14363
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
645 %!assert (interp1 ([3,2,1],[3,2,2],2.5), 2.5) |
9929
45c08d7c2c79
allow discontinuous interpolant in interp1
Jaroslav Hajek <highegg@gmail.com>
parents:
9769
diff
changeset
|
646 |
12608
59e2460acae1
make piecewise polynomial (pp) functions more compatible
Kai Habel <kai.habel@gmx.de>
parents:
12459
diff
changeset
|
647 %!assert (interp1 ([4,4,3,2,0],[0,1,4,2,1],[1.5,4,4.5], "linear"), [1.75,1,NA]) |
10820
c44c786f87ba
interp1.m: When absent set X equal to the inices of Y.
Ben Abbott <bpabbott@mac.com>
parents:
10793
diff
changeset
|
648 %!assert (interp1 (0:4, 2.5), 1.5) |
14363
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
649 |
18417 | 650 ## Left and Right discontinuities |
18633
5fe907167520
interp1.m: fix function for inputs w/multiple discontinuities (bug #41980).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
18418
diff
changeset
|
651 %!assert (interp1 ([1,2,2,3,4],[0,1,4,2,1],[-1,1.5,2,2.5,3.5], "linear", "extrap", "right"), [-2,0.5,4,3,1.5]) |
5fe907167520
interp1.m: fix function for inputs w/multiple discontinuities (bug #41980).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents:
18418
diff
changeset
|
652 %!assert (interp1 ([1,2,2,3,4],[0,1,4,2,1],[-1,1.5,2,2.5,3.5], "linear", "extrap", "left"), [-2,0.5,1,3,1.5]) |
18417 | 653 |
654 %% Test input validation | |
14363
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
655 %!error interp1 () |
18417 | 656 %!error interp1 (1,2,3,4,5,6,7) |
18606
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
657 %!error <minimum of 2 points required> interp1 (1,1,1, "linear") |
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
658 %!error <minimum of 2 points required> interp1 (1,1,1, "*nearest") |
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
659 %!error <minimum of 2 points required> interp1 (1,1,1, "*linear") |
18418
1ad77b3e6bef
interp1.m: Demote error to warning about multiple discontinuties (bug #41386).
Rik <rik@octave.org>
parents:
18417
diff
changeset
|
660 %!warning <multiple discontinuities> interp1 ([1 1 1 2], [1 2 3 4], 1); |
18417 | 661 %!error <discontinuities not supported> interp1 ([1 1],[1 2],1, "pchip") |
662 %!error <discontinuities not supported> interp1 ([1 1],[1 2],1, "cubic") | |
663 %!error <discontinuities not supported> interp1 ([1 1],[1 2],1, "spline") | |
18606
0ede4dbb37f1
Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents:
18418
diff
changeset
|
664 %!error <invalid method 'bogus'> interp1 (1:2,1:2,1, "bogus") |
14363
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14359
diff
changeset
|
665 |