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