annotate scripts/general/interp1.m @ 18754:0ede4dbb37f1

Overhaul interp1, interp2, interp3 functions. * NEWS: Announce change in 'cubic' interpolation method for interp2 to match Matlab. * bicubic.m: Use interp2 (..., "spline") in %!tests. * interp1.m: Improve docstring. Use switch statement instead of if/elseif tree for simpler code. Use more informative error message than 'table too short'. Add titles to demo plots. Add new demo block showing difference between 'pchip' and 'spline' methods. * interp2.m: Rewrite docstring. Use variable 'extrap' instead of 'extrapval' to match documentation. Use clearer messages in error() calls. Make 'cubic' use the same algorithm as 'pchip' for Matlab compatibility. Use Octave coding conventions regarding spaces between variable and parenthesis. Added input validation tests. * interp3.m: Rewrite docstring. Use clearer messages in error() calls. Make 'cubic' use the same algorithm as 'pchip' for Matlab compatibility. Simplify input processing. Rewrite some %!tests for clarity. Added input validation tests.
author Rik <rik@octave.org>
date Sun, 30 Mar 2014 14:18:43 -0700
parents 1ad77b3e6bef
children 6a4b7ccc60b1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
3 ##
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
4 ## This file is part of Octave.
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
5 ##
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
6 ## Octave is free software; you can redistribute it and/or modify it
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
7 ## under the terms of the GNU General Public License as published by
7016
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 7001
diff changeset
8 ## the Free Software Foundation; either version 3 of the License, or (at
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 7001
diff changeset
9 ## your option) any later version.
5837
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
10 ##
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
11 ## Octave is distributed in the hope that it will be useful, but
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
12 ## WITHOUT ANY WARRANTY; without even the implied warranty of
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
13 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
14 ## General Public License for more details.
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
15 ##
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
16 ## You should have received a copy of the GNU General Public License
7016
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 7001
diff changeset
17 ## along with Octave; see the file COPYING. If not, see
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 7001
diff changeset
18 ## <http://www.gnu.org/licenses/>.
5837
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
19
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
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
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
23 ## @deftypefnx {Function File} {@var{yi} =} interp1 (@dots{}, @var{method})
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
24 ## @deftypefnx {Function File} {@var{yi} =} interp1 (@dots{}, @var{extrap})
18485
71d1a1450365 interp1.m: Clean up function
Rik <rik@octave.org>
parents: 18483
diff changeset
25 ## @deftypefnx {Function File} {@var{yi} =} interp1 (@dots{}, "left")
71d1a1450365 interp1.m: Clean up function
Rik <rik@octave.org>
parents: 18483
diff changeset
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
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
28 ##
18485
71d1a1450365 interp1.m: Clean up function
Rik <rik@octave.org>
parents: 18483
diff changeset
29 ## One-dimensional interpolation.
71d1a1450365 interp1.m: Clean up function
Rik <rik@octave.org>
parents: 18483
diff changeset
30 ##
71d1a1450365 interp1.m: Clean up function
Rik <rik@octave.org>
parents: 18483
diff changeset
31 ## Interpolate input data to determine the value of @var{yi} at the points
18754
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
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: 18486
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: 18486
diff changeset
34 ## array, the interpolation is performed on each column of @var{y}.
5837
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
35 ##
18754
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
diff changeset
36 ## The interpolation @var{method} is one of:
5837
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
37 ##
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
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"}
18754
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
diff changeset
40 ## Return the nearest neighbor.
10821
693e22af08ae Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents: 10820
diff changeset
41 ##
18754
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
diff changeset
42 ## @item @qcode{"linear"} (default)
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
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"}
18754
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
diff changeset
46 ## Piecewise cubic Hermite interpolating polynomial---shape-preserving
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
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"}
18754
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
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
18754
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
diff changeset
54 ## throughout the curve.
5837
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
55 ## @end table
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
56 ##
18485
71d1a1450365 interp1.m: Clean up function
Rik <rik@octave.org>
parents: 18483
diff changeset
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
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
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
18485
71d1a1450365 interp1.m: Clean up function
Rik <rik@octave.org>
parents: 18483
diff changeset
63 ## beyond the endpoints using the current @var{method}. If @var{extrap} is a
71d1a1450365 interp1.m: Clean up function
Rik <rik@octave.org>
parents: 18483
diff changeset
64 ## number, then replace values beyond the endpoints with that number. When
18754
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
diff changeset
65 ## unspecified, @var{extrap} defaults to @code{NA}.
5837
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
66 ##
18485
71d1a1450365 interp1.m: Clean up function
Rik <rik@octave.org>
parents: 18483
diff changeset
67 ## If the string argument @qcode{"pp"} is specified, then @var{xi} should not
71d1a1450365 interp1.m: Clean up function
Rik <rik@octave.org>
parents: 18483
diff changeset
68 ## be supplied and @code{interp1} returns a piecewise polynomial object. This
71d1a1450365 interp1.m: Clean up function
Rik <rik@octave.org>
parents: 18483
diff changeset
69 ## object can later be used with @code{ppval} to evaluate the interpolation.
5837
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
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
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
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
18485
71d1a1450365 interp1.m: Clean up function
Rik <rik@octave.org>
parents: 18483
diff changeset
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
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
86 ## An example of the use of @code{interp1} is
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
87 ##
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
88 ## @example
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
89 ## @group
8507
cadc73247d65 style fixes
John W. Eaton <jwe@octave.org>
parents: 7671
diff changeset
90 ## xf = [0:0.05:10];
cadc73247d65 style fixes
John W. Eaton <jwe@octave.org>
parents: 7671
diff changeset
91 ## yf = sin (2*pi*xf/5);
cadc73247d65 style fixes
John W. Eaton <jwe@octave.org>
parents: 7671
diff changeset
92 ## xp = [0:10];
cadc73247d65 style fixes
John W. Eaton <jwe@octave.org>
parents: 7671
diff changeset
93 ## yp = sin (2*pi*xp/5);
cadc73247d65 style fixes
John W. Eaton <jwe@octave.org>
parents: 7671
diff changeset
94 ## lin = interp1 (xp, yp, xf);
18754
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
diff changeset
95 ## near = interp1 (xp, yp, xf, "nearest");
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
diff changeset
96 ## pch = interp1 (xp, yp, xf, "pchip");
8507
cadc73247d65 style fixes
John W. Eaton <jwe@octave.org>
parents: 7671
diff changeset
97 ## spl = interp1 (xp, yp, xf, "spline");
18754
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
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: 18486
diff changeset
99 ## xp,yp,"r*");
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
diff changeset
100 ## legend ("original", "nearest", "linear", "pchip", "spline");
5837
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
101 ## @end group
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
102 ## @end example
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
103 ##
18754
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
diff changeset
104 ## @seealso{pchip, spline, interpft, interp2, interp3, interpn}
5837
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
105 ## @end deftypefn
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
106
5838
376e02b2ce70 [project @ 2006-06-01 20:23:53 by jwe]
jwe
parents: 5837
diff changeset
107 ## Author: Paul Kienzle
376e02b2ce70 [project @ 2006-06-01 20:23:53 by jwe]
jwe
parents: 5837
diff changeset
108 ## Date: 2000-03-25
5837
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
109 ## added 'nearest' as suggested by Kai Habel
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
110 ## 2000-07-17 Paul Kienzle
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
111 ## added '*' methods and matrix y
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
112 ## check for proper table lengths
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
113 ## 2002-01-23 Paul Kienzle
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
114 ## fixed extrapolation
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
115
5838
376e02b2ce70 [project @ 2006-06-01 20:23:53 by jwe]
jwe
parents: 5837
diff changeset
116 function yi = interp1 (x, y, varargin)
5837
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
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
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
119 print_usage ();
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
120 endif
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
121
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
122 method = "linear";
6742
ebf96cc00ee9 [project @ 2007-06-18 16:27:52 by jwe]
jwe
parents: 6721
diff changeset
123 extrap = NA;
5837
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
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
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
126 firstnumeric = true;
18485
71d1a1450365 interp1.m: Clean up function
Rik <rik@octave.org>
parents: 18483
diff changeset
127 rightcontinuous = NaN;
5837
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
128
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
129 if (nargin > 2)
5838
376e02b2ce70 [project @ 2006-06-01 20:23:53 by jwe]
jwe
parents: 5837
diff changeset
130 for i = 1:length (varargin)
5837
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
131 arg = varargin{i};
5838
376e02b2ce70 [project @ 2006-06-01 20:23:53 by jwe]
jwe
parents: 5837
diff changeset
132 if (ischar (arg))
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9929
diff changeset
133 arg = tolower (arg);
18754
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
diff changeset
134 switch (arg)
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
diff changeset
135 case "extrap"
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
diff changeset
136 extrap = "extrap";
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
diff changeset
137 case "pp"
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
diff changeset
138 ispp = true;
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
diff changeset
139 case {"right", "-right"}
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
diff changeset
140 rightcontinuous = true;
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
diff changeset
141 case {"left", "-left"}
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
diff changeset
142 rightcontinuous = false;
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
diff changeset
143 otherwise
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
diff changeset
144 method = arg;
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
diff changeset
145 endswitch
5837
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
146 else
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9929
diff changeset
147 if (firstnumeric)
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9929
diff changeset
148 xi = arg;
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9929
diff changeset
149 firstnumeric = false;
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9929
diff changeset
150 else
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9929
diff changeset
151 extrap = arg;
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9929
diff changeset
152 endif
5837
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
153 endif
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
154 endfor
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
155 endif
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
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
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
167 ## reshape matrices for convenience
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
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
376e02b2ce70 [project @ 2006-06-01 20:23:53 by jwe]
jwe
parents: 5837
diff changeset
172 y = y(:);
5837
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
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
376e02b2ce70 [project @ 2006-06-01 20:23:53 by jwe]
jwe
parents: 5837
diff changeset
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
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
178 xi = xi(:);
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
179
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
180 ## determine sizes
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
181 if (nx < 2 || ny < 2)
18754
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
diff changeset
182 error ("interp1: minimum of 2 points required in each dimension");
5837
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
183 endif
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
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
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
189 endif
5838
376e02b2ce70 [project @ 2006-06-01 20:23:53 by jwe]
jwe
parents: 5837
diff changeset
190
18485
71d1a1450365 interp1.m: Clean up function
Rik <rik@octave.org>
parents: 18483
diff changeset
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
15193
2d5e4d283688 Modified interp1.m file to check whether X has distinct values or not.
Vivek Dogra <vivek.dogra.iitd@gmail.com>
parents: 14868
diff changeset
198 endif
2d5e4d283688 Modified interp1.m file to check whether X has distinct values or not.
Vivek Dogra <vivek.dogra.iitd@gmail.com>
parents: 14868
diff changeset
199
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 if ((rightcontinuous && (x(end) < x(1)))
17307
4448cc742880 Use '!' not operator rather than '~' in core m-files.
Rik <rik@octave.org>
parents: 17306
diff changeset
201 || (! 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
202 ## 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
203 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
204 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
205 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
206
9754
4219e5cf773d improve interp1 and pchip
Jaroslav Hajek <highegg@gmail.com>
parents: 9070
diff changeset
207 starmethod = method(1) == "*";
4219e5cf773d improve interp1 and pchip
Jaroslav Hajek <highegg@gmail.com>
parents: 9070
diff changeset
208
4219e5cf773d improve interp1 and pchip
Jaroslav Hajek <highegg@gmail.com>
parents: 9070
diff changeset
209 if (starmethod)
4219e5cf773d improve interp1 and pchip
Jaroslav Hajek <highegg@gmail.com>
parents: 9070
diff changeset
210 dx = x(2) - x(1);
4219e5cf773d improve interp1 and pchip
Jaroslav Hajek <highegg@gmail.com>
parents: 9070
diff changeset
211 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
212 jumps = x(1:end-1) == x(2:end);
9929
45c08d7c2c79 allow discontinuous interpolant in interp1
Jaroslav Hajek <highegg@gmail.com>
parents: 9769
diff changeset
213 have_jumps = any (jumps);
45c08d7c2c79 allow discontinuous interpolant in interp1
Jaroslav Hajek <highegg@gmail.com>
parents: 9769
diff changeset
214 if (have_jumps)
18485
71d1a1450365 interp1.m: Clean up function
Rik <rik@octave.org>
parents: 18483
diff changeset
215 if (strcmp (method, "linear") || strcmp (method, ("nearest")))
9929
45c08d7c2c79 allow discontinuous interpolant in interp1
Jaroslav Hajek <highegg@gmail.com>
parents: 9769
diff changeset
216 if (any (jumps(1:nx-2) & jumps(2:nx-1)))
18486
1ad77b3e6bef interp1.m: Demote error to warning about multiple discontinuties (bug #41386).
Rik <rik@octave.org>
parents: 18485
diff changeset
217 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
218 endif
45c08d7c2c79 allow discontinuous interpolant in interp1
Jaroslav Hajek <highegg@gmail.com>
parents: 9769
diff changeset
219 else
15468
6437fa7263dd use ' instead of ` in error messages, warnings and most comments
John W. Eaton <jwe@octave.org>
parents: 15218
diff changeset
220 error ("interp1: discontinuities not supported for method '%s'", method);
9929
45c08d7c2c79 allow discontinuous interpolant in interp1
Jaroslav Hajek <highegg@gmail.com>
parents: 9769
diff changeset
221 endif
5837
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
222 endif
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
223 endif
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
224
9754
4219e5cf773d improve interp1 and pchip
Jaroslav Hajek <highegg@gmail.com>
parents: 9070
diff changeset
225 ## Proceed with interpolating by all methods.
4219e5cf773d improve interp1 and pchip
Jaroslav Hajek <highegg@gmail.com>
parents: 9070
diff changeset
226 switch (method)
18485
71d1a1450365 interp1.m: Clean up function
Rik <rik@octave.org>
parents: 18483
diff changeset
227
17174
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17088
diff changeset
228 case "nearest"
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17088
diff changeset
229 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
230 shiftdim (y, 1), szy(2:end));
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17088
diff changeset
231 pp.orient = "first";
13141
e81ddf9cacd5 maint: untabify and remove trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 12608
diff changeset
232
17174
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17088
diff changeset
233 if (ispp)
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17088
diff changeset
234 yi = pp;
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17088
diff changeset
235 else
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17088
diff changeset
236 yi = ppval (pp, reshape (xi, szx));
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17088
diff changeset
237 endif
18485
71d1a1450365 interp1.m: Clean up function
Rik <rik@octave.org>
parents: 18483
diff changeset
238
17174
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17088
diff changeset
239 case "*nearest"
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17088
diff changeset
240 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
241 shiftdim (y, 1), szy(2:end));
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17088
diff changeset
242 pp.orient = "first";
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
18485
71d1a1450365 interp1.m: Clean up function
Rik <rik@octave.org>
parents: 18483
diff changeset
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;
18483
b06675ef40f2 interp1.m: Fix handling multi-column y-input with jumps (bug #40825).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents: 17744
diff changeset
251 yy = y;
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 nxx = nx;
17174
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17088
diff changeset
253 if (have_jumps)
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17088
diff changeset
254 ## Omit zero-size intervals.
18483
b06675ef40f2 interp1.m: Fix handling multi-column y-input with jumps (bug #40825).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents: 17744
diff changeset
255 yy(jumps, :) = [];
17174
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17088
diff changeset
256 xx(jumps) = [];
18483
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);
17174
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17088
diff changeset
258 endif
12608
59e2460acae1 make piecewise polynomial (pp) functions more compatible
Kai Habel <kai.habel@gmx.de>
parents: 12459
diff changeset
259
18483
b06675ef40f2 interp1.m: Fix handling multi-column y-input with jumps (bug #40825).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents: 17744
diff changeset
260 dy = diff (yy);
b06675ef40f2 interp1.m: Fix handling multi-column y-input with jumps (bug #40825).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents: 17744
diff changeset
261 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
262 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
263
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 coefs = [(dy./dx).'(:), yy(1:nxx-1, :).'(:)];
b06675ef40f2 interp1.m: Fix handling multi-column y-input with jumps (bug #40825).
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents: 17744
diff changeset
265
17174
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17088
diff changeset
266 pp = mkpp (xx, coefs, szy(2:end));
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17088
diff changeset
267 pp.orient = "first";
12608
59e2460acae1 make piecewise polynomial (pp) functions more compatible
Kai Habel <kai.habel@gmx.de>
parents: 12459
diff changeset
268
17174
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17088
diff changeset
269 if (ispp)
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17088
diff changeset
270 yi = pp;
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17088
diff changeset
271 else
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17088
diff changeset
272 yi = ppval (pp, reshape (xi, szx));
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17088
diff changeset
273 endif
12608
59e2460acae1 make piecewise polynomial (pp) functions more compatible
Kai Habel <kai.habel@gmx.de>
parents: 12459
diff changeset
274
17174
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17088
diff changeset
275 case "*linear"
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17088
diff changeset
276 dy = diff (y);
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17088
diff changeset
277 coefs = [(dy/dx).'(:), y(1:nx-1, :).'(:)];
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17088
diff changeset
278 pp = mkpp (x, coefs, szy(2:end));
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17088
diff changeset
279 pp.orient = "first";
12608
59e2460acae1 make piecewise polynomial (pp) functions more compatible
Kai Habel <kai.habel@gmx.de>
parents: 12459
diff changeset
280
17174
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17088
diff changeset
281 if (ispp)
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17088
diff changeset
282 yi = pp;
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17088
diff changeset
283 else
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17088
diff changeset
284 yi = ppval (pp, reshape (xi, szx));
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17088
diff changeset
285 endif
5837
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
286
17174
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17088
diff changeset
287 case {"pchip", "*pchip", "cubic", "*cubic"}
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17088
diff changeset
288 if (nx == 2 || starmethod)
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17088
diff changeset
289 x = linspace (x(1), x(nx), ny);
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17088
diff changeset
290 endif
13141
e81ddf9cacd5 maint: untabify and remove trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 12608
diff changeset
291
17174
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17088
diff changeset
292 if (ispp)
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17088
diff changeset
293 y = shiftdim (reshape (y, szy), 1);
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17088
diff changeset
294 yi = pchip (x, y);
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17088
diff changeset
295 yi.orient = "first";
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17088
diff changeset
296 else
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17088
diff changeset
297 y = shiftdim (y, 1);
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17088
diff changeset
298 yi = pchip (x, y, reshape (xi, szx));
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17088
diff changeset
299 if (! isvector (y))
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17088
diff changeset
300 yi = shiftdim (yi, 1);
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17088
diff changeset
301 endif
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17088
diff changeset
302 endif
18485
71d1a1450365 interp1.m: Clean up function
Rik <rik@octave.org>
parents: 18483
diff changeset
303
17174
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17088
diff changeset
304 case {"spline", "*spline"}
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17088
diff changeset
305 if (nx == 2 || starmethod)
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17088
diff changeset
306 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
307 endif
13141
e81ddf9cacd5 maint: untabify and remove trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 12608
diff changeset
308
17174
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17088
diff changeset
309 if (ispp)
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17088
diff changeset
310 y = shiftdim (reshape (y, szy), 1);
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17088
diff changeset
311 yi = spline (x, y);
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17088
diff changeset
312 yi.orient = "first";
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17088
diff changeset
313 else
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17088
diff changeset
314 y = shiftdim (y, 1);
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17088
diff changeset
315 yi = spline (x, y, reshape (xi, szx));
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17088
diff changeset
316 if (! isvector (y))
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17088
diff changeset
317 yi = shiftdim (yi, 1);
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17088
diff changeset
318 endif
14492
7ce925166af6 Fix inconsistent orientation of output matrix for interp1.
Olaf Till <i7tiol@t-online.de>
parents: 14363
diff changeset
319 endif
18485
71d1a1450365 interp1.m: Clean up function
Rik <rik@octave.org>
parents: 18483
diff changeset
320
17174
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17088
diff changeset
321 otherwise
c3c1ebfaa7dc maint: Use common indentation for switch statement.
Rik <rik@octave.org>
parents: 17088
diff changeset
322 error ("interp1: invalid method '%s'", method);
18485
71d1a1450365 interp1.m: Clean up function
Rik <rik@octave.org>
parents: 18483
diff changeset
323
9754
4219e5cf773d improve interp1 and pchip
Jaroslav Hajek <highegg@gmail.com>
parents: 9070
diff changeset
324 endswitch
5837
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
325
18754
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
diff changeset
326 if (! ispp && isnumeric (extrap))
18485
71d1a1450365 interp1.m: Clean up function
Rik <rik@octave.org>
parents: 18483
diff changeset
327 ## determine which values are out of range and set them to extrap,
71d1a1450365 interp1.m: Clean up function
Rik <rik@octave.org>
parents: 18483
diff changeset
328 ## unless extrap == "extrap".
71d1a1450365 interp1.m: Clean up function
Rik <rik@octave.org>
parents: 18483
diff changeset
329 minx = min (x(1), x(nx));
71d1a1450365 interp1.m: Clean up function
Rik <rik@octave.org>
parents: 18483
diff changeset
330 maxx = max (x(1), x(nx));
9754
4219e5cf773d improve interp1 and pchip
Jaroslav Hajek <highegg@gmail.com>
parents: 9070
diff changeset
331
18754
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
diff changeset
332 outliers = xi < minx | ! (xi <= maxx); # this even catches NaNs
18485
71d1a1450365 interp1.m: Clean up function
Rik <rik@octave.org>
parents: 18483
diff changeset
333 if (size_equal (outliers, yi))
71d1a1450365 interp1.m: Clean up function
Rik <rik@octave.org>
parents: 18483
diff changeset
334 yi(outliers) = extrap;
71d1a1450365 interp1.m: Clean up function
Rik <rik@octave.org>
parents: 18483
diff changeset
335 yi = reshape (yi, szx);
71d1a1450365 interp1.m: Clean up function
Rik <rik@octave.org>
parents: 18483
diff changeset
336 elseif (! isvector (yi))
71d1a1450365 interp1.m: Clean up function
Rik <rik@octave.org>
parents: 18483
diff changeset
337 yi(outliers, :) = extrap;
71d1a1450365 interp1.m: Clean up function
Rik <rik@octave.org>
parents: 18483
diff changeset
338 else
71d1a1450365 interp1.m: Clean up function
Rik <rik@octave.org>
parents: 18483
diff changeset
339 yi(outliers.') = extrap;
9754
4219e5cf773d improve interp1 and pchip
Jaroslav Hajek <highegg@gmail.com>
parents: 9070
diff changeset
340 endif
5837
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
341 endif
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
342
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
343 endfunction
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
344
14237
11949c9795a0 Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
345
5837
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
346 %!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
347 %! clf;
14363
f3d52523cde1 Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents: 14359
diff changeset
348 %! 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
349 %! xp = 0:10; yp = sin (2*pi*xp/5);
18754
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
diff changeset
350 %! lin = interp1 (xp,yp,xf, 'linear');
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
diff changeset
351 %! spl = interp1 (xp,yp,xf, 'spline');
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
diff changeset
352 %! pch = interp1 (xp,yp,xf, 'pchip');
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
diff changeset
353 %! near= interp1 (xp,yp,xf, 'nearest');
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
diff changeset
354 %! 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: 18486
diff changeset
355 %! legend ('original', 'nearest', 'linear', 'pchip', 'spline');
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
diff changeset
356 %! title ('Interpolation of continuous function sin (x) w/various methods');
5837
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
357 %! %--------------------------------------------------------
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
358 %! % confirm that interpolated function matches the original
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
359
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
360 %!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
361 %! clf;
14363
f3d52523cde1 Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents: 14359
diff changeset
362 %! 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
363 %! xp = 0:10; yp = sin (2*pi*xp/5);
18754
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
diff changeset
364 %! lin = interp1 (xp,yp,xf, '*linear');
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
diff changeset
365 %! spl = interp1 (xp,yp,xf, '*spline');
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
diff changeset
366 %! pch = interp1 (xp,yp,xf, '*pchip');
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
diff changeset
367 %! near= interp1 (xp,yp,xf, '*nearest');
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
diff changeset
368 %! 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: 18486
diff changeset
369 %! legend ('*original', '*nearest', '*linear', '*pchip', '*spline');
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
diff changeset
370 %! title ('Interpolation of continuous function sin (x) w/various *methods');
5837
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
371 %! %--------------------------------------------------------
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
372 %! % confirm that interpolated function matches the original
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
373
6721
01036667884a [project @ 2007-06-14 06:56:41 by dbateman]
dbateman
parents: 6702
diff changeset
374 %!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
375 %! clf;
18754
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
diff changeset
376 %! fstep = @(x) x > 1;
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
diff changeset
377 %! xf = 0:0.05:2; yf = fstep (xf);
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
diff changeset
378 %! xp = linspace (0,2,10); yp = fstep (xp);
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
diff changeset
379 %! pch = interp1 (xp,yp,xf, 'pchip');
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
diff changeset
380 %! spl = interp1 (xp,yp,xf, 'spline');
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
diff changeset
381 %! plot (xf,yf,'r',xf,pch,'b',xf,spl,'m',xp,yp,'r*');
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
diff changeset
382 %! title ({'Interpolation of step function with discontinuity at x==1', ...
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
diff changeset
383 %! 'Note: "pchip" is shape-preserving, "spline" (continuous 1st, 2nd derivatives) is not'});
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
diff changeset
384 %! legend ('original', 'pchip', 'spline');
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
diff changeset
385
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
diff changeset
386 %!demo
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
diff changeset
387 %! clf;
6721
01036667884a [project @ 2007-06-14 06:56:41 by dbateman]
dbateman
parents: 6702
diff changeset
388 %! t = 0 : 0.3 : pi; dt = t(2)-t(1);
01036667884a [project @ 2007-06-14 06:56:41 by dbateman]
dbateman
parents: 6702
diff changeset
389 %! n = length (t); k = 100; dti = dt*n/k;
01036667884a [project @ 2007-06-14 06:56:41 by dbateman]
dbateman
parents: 6702
diff changeset
390 %! ti = t(1) + [0 : k-1]*dti;
01036667884a [project @ 2007-06-14 06:56:41 by dbateman]
dbateman
parents: 6702
diff changeset
391 %! y = sin (4*t + 0.3) .* cos (3*t - 0.1);
18754
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
diff changeset
392 %! ddys = diff (diff (interp1 (t,y,ti, 'spline'))./dti)./dti;
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
diff changeset
393 %! ddyp = diff (diff (interp1 (t,y,ti, 'pchip')) ./dti)./dti;
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
diff changeset
394 %! ddyc = diff (diff (interp1 (t,y,ti, 'cubic')) ./dti)./dti;
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
diff changeset
395 %! 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: 18486
diff changeset
396 %! 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: 18486
diff changeset
397 %! 'Note: "spline" has continous 2nd derivative, others do not'});
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
diff changeset
398 %! legend ('spline', 'pchip', 'cubic');
6721
01036667884a [project @ 2007-06-14 06:56:41 by dbateman]
dbateman
parents: 6702
diff changeset
399
9929
45c08d7c2c79 allow discontinuous interpolant in interp1
Jaroslav Hajek <highegg@gmail.com>
parents: 9769
diff changeset
400 %!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
401 %! clf;
14363
f3d52523cde1 Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents: 14359
diff changeset
402 %! 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
403 %! xp = [0:.5:4.5,4.99,5:.5:10]; yp = sin (2*pi*xp/5) - (xp >= 5);
18754
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
diff changeset
404 %! lin = interp1 (xp,yp,xf, 'linear');
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
diff changeset
405 %! near= interp1 (xp,yp,xf, 'nearest');
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
diff changeset
406 %! plot (xf,yf,'r', xf,near,'g', xf,lin,'b', xp,yp,'r*');
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
diff changeset
407 %! legend ('original', 'nearest', 'linear');
9929
45c08d7c2c79 allow discontinuous interpolant in interp1
Jaroslav Hajek <highegg@gmail.com>
parents: 9769
diff changeset
408 %! %--------------------------------------------------------
45c08d7c2c79 allow discontinuous interpolant in interp1
Jaroslav Hajek <highegg@gmail.com>
parents: 9769
diff changeset
409 %! % confirm that interpolated function matches the original
45c08d7c2c79 allow discontinuous interpolant in interp1
Jaroslav Hajek <highegg@gmail.com>
parents: 9769
diff changeset
410
15218
94d512d712e3 Modified interp1.m file to check whether X has distinct values or not.
Ben Abbott <bpabbott@mac.com>
parents: 15193
diff changeset
411 %!demo
94d512d712e3 Modified interp1.m file to check whether X has distinct values or not.
Ben Abbott <bpabbott@mac.com>
parents: 15193
diff changeset
412 %! clf;
94d512d712e3 Modified interp1.m file to check whether X has distinct values or not.
Ben Abbott <bpabbott@mac.com>
parents: 15193
diff changeset
413 %! 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
414 %! 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
415 %! 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
416 %! 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
417 %! 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
418 %! 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
419 %! 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
420 %! g = plot (x, interp1 (x2, y2, x), 'r', x2, y2, '*r');
18485
71d1a1450365 interp1.m: Clean up function
Rik <rik@octave.org>
parents: 18483
diff changeset
421 %! axis ([0.5 3.5 -0.5 1.5])
71d1a1450365 interp1.m: Clean up function
Rik <rik@octave.org>
parents: 18483
diff changeset
422 %! legend ([h(1), g(1)], {'left-continuous', 'right-continuous'}, ...
71d1a1450365 interp1.m: Clean up function
Rik <rik@octave.org>
parents: 18483
diff changeset
423 %! '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
424 %! 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
425 %! %--------------------------------------------------------
18485
71d1a1450365 interp1.m: Clean up function
Rik <rik@octave.org>
parents: 18483
diff changeset
426 %! % 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
427
18754
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
diff changeset
428 ##FIXME: add test for N-d arguments here
9929
45c08d7c2c79 allow discontinuous interpolant in interp1
Jaroslav Hajek <highegg@gmail.com>
parents: 9769
diff changeset
429
6374
419017274c1e [project @ 2007-03-01 15:57:50 by jwe]
jwe
parents: 6366
diff changeset
430 ## For each type of interpolated test, confirm that the interpolated
419017274c1e [project @ 2007-03-01 15:57:50 by jwe]
jwe
parents: 6366
diff changeset
431 ## 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
432 ## from the knots are requested, but only "nearest" and "linear"
6374
419017274c1e [project @ 2007-03-01 15:57:50 by jwe]
jwe
parents: 6366
diff changeset
433 ## confirm they are the correct values.
419017274c1e [project @ 2007-03-01 15:57:50 by jwe]
jwe
parents: 6366
diff changeset
434
5837
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
435 %!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
436 %! 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
437 %! yp = sin (2*pi*xp/5);
6374
419017274c1e [project @ 2007-03-01 15:57:50 by jwe]
jwe
parents: 6366
diff changeset
438 %! xi = [-1, 0, 2.2, 4, 6.6, 10, 11];
419017274c1e [project @ 2007-03-01 15:57:50 by jwe]
jwe
parents: 6366
diff changeset
439
419017274c1e [project @ 2007-03-01 15:57:50 by jwe]
jwe
parents: 6366
diff changeset
440 ## The following BLOCK/ENDBLOCK section is repeated for each style
419017274c1e [project @ 2007-03-01 15:57:50 by jwe]
jwe
parents: 6366
diff changeset
441 ## nearest, linear, cubic, spline, pchip
419017274c1e [project @ 2007-03-01 15:57:50 by jwe]
jwe
parents: 6366
diff changeset
442 ## The test for ppval of cubic has looser tolerance, but otherwise
419017274c1e [project @ 2007-03-01 15:57:50 by jwe]
jwe
parents: 6366
diff changeset
443 ## the tests are identical.
419017274c1e [project @ 2007-03-01 15:57:50 by jwe]
jwe
parents: 6366
diff changeset
444 ## 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
445 ## be sure to add them to both sections of each block. One test,
6374
419017274c1e [project @ 2007-03-01 15:57:50 by jwe]
jwe
parents: 6366
diff changeset
446 ## style vs. *style, occurs only in the first section.
419017274c1e [project @ 2007-03-01 15:57:50 by jwe]
jwe
parents: 6366
diff changeset
447 ## 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
448
5837
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
449 %!test style = "nearest";
6374
419017274c1e [project @ 2007-03-01 15:57:50 by jwe]
jwe
parents: 6366
diff changeset
450 ## BLOCK
14363
f3d52523cde1 Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents: 14359
diff changeset
451 %!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
452 %!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
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 (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
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 (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
459 %! [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
460 %!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
461 %! 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
462 %!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
463 %! 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
464 %!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
465 %!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
466 %! 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
467 %!test style = ["*",style];
f3d52523cde1 Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents: 14359
diff changeset
468 %!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
469 %!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
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 (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
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 (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
476 %! [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
477 %!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
478 %! 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
479 %!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
480 %! 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
481 %!error interp1 (1,1,1, style)
6374
419017274c1e [project @ 2007-03-01 15:57:50 by jwe]
jwe
parents: 6366
diff changeset
482 ## 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
483
14363
f3d52523cde1 Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents: 14359
diff changeset
484 %!test style = "linear";
6374
419017274c1e [project @ 2007-03-01 15:57:50 by jwe]
jwe
parents: 6366
diff changeset
485 ## BLOCK
14363
f3d52523cde1 Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents: 14359
diff changeset
486 %!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
487 %!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
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 (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
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 (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
494 %! [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
495 %!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
496 %! 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
497 %!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
498 %! 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
499 %!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
500 %!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
501 %! 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
502 %!test style = ['*',style];
f3d52523cde1 Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents: 14359
diff changeset
503 %!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
504 %!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
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 (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
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 (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
511 %! [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
512 %!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
513 %! 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
514 %!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
515 %! 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
516 %!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
517 %!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
518 %!error interp1 (1,1,1, style)
6374
419017274c1e [project @ 2007-03-01 15:57:50 by jwe]
jwe
parents: 6366
diff changeset
519 ## 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
520
14363
f3d52523cde1 Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents: 14359
diff changeset
521 %!test style = "cubic";
6374
419017274c1e [project @ 2007-03-01 15:57:50 by jwe]
jwe
parents: 6366
diff changeset
522 ## BLOCK
14363
f3d52523cde1 Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents: 14359
diff changeset
523 %!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
524 %!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
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 (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
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 (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
531 %! [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
532 %!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
533 %! 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
534 %!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
535 %! 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
536 %!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
537 %!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
538 %! 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
539 %!test style = ["*",style];
f3d52523cde1 Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents: 14359
diff changeset
540 %!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
541 %!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
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 (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
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 (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
548 %! [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
549 %!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
550 %! 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
551 %!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
552 %! 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
553 %!error interp1 (1,1,1, style)
6374
419017274c1e [project @ 2007-03-01 15:57:50 by jwe]
jwe
parents: 6366
diff changeset
554 ## 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
555
14363
f3d52523cde1 Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents: 14359
diff changeset
556 %!test style = "pchip";
6374
419017274c1e [project @ 2007-03-01 15:57:50 by jwe]
jwe
parents: 6366
diff changeset
557 ## BLOCK
14363
f3d52523cde1 Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents: 14359
diff changeset
558 %!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
559 %!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
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 (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
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 (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
566 %! [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
567 %!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
568 %! 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
569 %!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
570 %! 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
571 %!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
572 %!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
573 %! 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
574 %!test style = ["*",style];
f3d52523cde1 Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents: 14359
diff changeset
575 %!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
576 %!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
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 (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
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 (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
583 %! [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
584 %!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
585 %! 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
586 %!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
587 %! 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
588 %!error interp1 (1,1,1, style)
6374
419017274c1e [project @ 2007-03-01 15:57:50 by jwe]
jwe
parents: 6366
diff changeset
589 ## 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
590
14363
f3d52523cde1 Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents: 14359
diff changeset
591 %!test style = "spline";
6374
419017274c1e [project @ 2007-03-01 15:57:50 by jwe]
jwe
parents: 6366
diff changeset
592 ## BLOCK
14363
f3d52523cde1 Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents: 14359
diff changeset
593 %!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
594 %!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
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 (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
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 (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
601 %! [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
602 %!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
603 %! 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
604 %!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
605 %! 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
606 %!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
607 %!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
608 %! 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
609 %!test style = ["*",style];
f3d52523cde1 Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents: 14359
diff changeset
610 %!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
611 %!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
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 (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
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 (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
618 %! [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
619 %!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
620 %! 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
621 %!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
622 %! 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
623 %!error interp1 (1,1,1, style)
6374
419017274c1e [project @ 2007-03-01 15:57:50 by jwe]
jwe
parents: 6366
diff changeset
624 ## ENDBLOCK
419017274c1e [project @ 2007-03-01 15:57:50 by jwe]
jwe
parents: 6366
diff changeset
625 ## ENDBLOCKTEST
5837
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
626
18485
71d1a1450365 interp1.m: Clean up function
Rik <rik@octave.org>
parents: 18483
diff changeset
627 ## test extrapolation (linear)
14363
f3d52523cde1 Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents: 14359
diff changeset
628 %!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
629 %!assert (interp1 (xp, yp, [-1, max(xp)+1],"linear",5), [5, 5])
5837
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
630
18485
71d1a1450365 interp1.m: Clean up function
Rik <rik@octave.org>
parents: 18483
diff changeset
631 ## Basic sanity checks
14363
f3d52523cde1 Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents: 14359
diff changeset
632 %!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
633 %!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
634 %!assert (interp1 (1:4,1:4,1.4,"cubic"), 1.4)
18485
71d1a1450365 interp1.m: Clean up function
Rik <rik@octave.org>
parents: 18483
diff changeset
635 %!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
636 %!assert (interp1 (1:3,1:3,1.4,"spline"), 1.4)
5837
55404f3b0da1 [project @ 2006-06-01 19:05:31 by jwe]
jwe
parents:
diff changeset
637
14363
f3d52523cde1 Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents: 14359
diff changeset
638 %!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
639 %!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
640 %!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
641 %!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
642 %!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
643
14363
f3d52523cde1 Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents: 14359
diff changeset
644 %!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
645
12608
59e2460acae1 make piecewise polynomial (pp) functions more compatible
Kai Habel <kai.habel@gmx.de>
parents: 12459
diff changeset
646 %!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
647 %!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
648
18485
71d1a1450365 interp1.m: Clean up function
Rik <rik@octave.org>
parents: 18483
diff changeset
649 ## Left and Right discontinuities
71d1a1450365 interp1.m: Clean up function
Rik <rik@octave.org>
parents: 18483
diff changeset
650 %!assert (interp1 ([1,2,2,3,4],[0,1,4,2,1],[-1,1.5,2,2.5,3.5], "linear", "extrap", "right"), [-8,2,4,3,1.5])
71d1a1450365 interp1.m: Clean up function
Rik <rik@octave.org>
parents: 18483
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", "left"), [-2,0.5,1,1.5,1.5])
71d1a1450365 interp1.m: Clean up function
Rik <rik@octave.org>
parents: 18483
diff changeset
652
71d1a1450365 interp1.m: Clean up function
Rik <rik@octave.org>
parents: 18483
diff changeset
653 %% Test input validation
14363
f3d52523cde1 Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents: 14359
diff changeset
654 %!error interp1 ()
18485
71d1a1450365 interp1.m: Clean up function
Rik <rik@octave.org>
parents: 18483
diff changeset
655 %!error interp1 (1,2,3,4,5,6,7)
18754
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
diff changeset
656 %!error <minimum of 2 points required> interp1 (1,1,1, "linear")
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
diff changeset
657 %!error <minimum of 2 points required> interp1 (1,1,1, "*nearest")
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
diff changeset
658 %!error <minimum of 2 points required> interp1 (1,1,1, "*linear")
18486
1ad77b3e6bef interp1.m: Demote error to warning about multiple discontinuties (bug #41386).
Rik <rik@octave.org>
parents: 18485
diff changeset
659 %!warning <multiple discontinuities> interp1 ([1 1 1 2], [1 2 3 4], 1);
18485
71d1a1450365 interp1.m: Clean up function
Rik <rik@octave.org>
parents: 18483
diff changeset
660 %!error <discontinuities not supported> interp1 ([1 1],[1 2],1, "pchip")
71d1a1450365 interp1.m: Clean up function
Rik <rik@octave.org>
parents: 18483
diff changeset
661 %!error <discontinuities not supported> interp1 ([1 1],[1 2],1, "cubic")
71d1a1450365 interp1.m: Clean up function
Rik <rik@octave.org>
parents: 18483
diff changeset
662 %!error <discontinuities not supported> interp1 ([1 1],[1 2],1, "spline")
18754
0ede4dbb37f1 Overhaul interp1, interp2, interp3 functions.
Rik <rik@octave.org>
parents: 18486
diff changeset
663 %!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
664