Return the Piecewise Cubic Hermite Interpolating Polynomial (pchip) of points x and y.
If called with two arguments, return the piecewise polynomial pp
that may be used with ppval
to evaluate the polynomial at specific
points.
When called with a third input argument, pchip
evaluates the pchip
polynomial at the points xi. The third calling form is equivalent to
ppval (pchip (x, y), xi)
.
The variable x must be a strictly monotonic vector (either increasing or decreasing) of length n.
y can be either a vector or array. If y is a vector then it
must be the same length n as x. If y is an array then
the size of y must have the form
[s1, s2, …, sk, n]
The array is reshaped internally to a matrix where the leading dimension is
given by
s1 * s2 * … * sk
and each row of this matrix is then treated separately. Note that this is
exactly opposite to interp1
but is done for MATLAB
compatibility.
See also: spline, ppval, mkpp, unmkpp.
The following code
x = 0:8; y = [1, 1, 1, 1, 0.5, 0, 0, 0, 0]; xi = 0:0.01:8; yspline = spline (x,y,xi); ypchip = pchip (x,y,xi); title ("pchip and spline fit to discontinuous function"); plot (xi,yspline, xi,ypchip,"-", x,y,"+"); legend ("spline", "pchip", "data"); %------------------------------------------------------------------- % confirm that pchip agreed better to discontinuous data than spline
Produces the following figure
Figure 1 |
---|
Package: octave