You are here : matlabSignal Processingspline

spline() - Signal Processing

yy = spline(x,Y,xx) uses a
cubic spline interpolation to find yy, the values
of the underlying function Y at the values of the
interpolant xx. For the interpolation, the independent
variable is assumed to be the final dimension of Y with
the breakpoints defined by x. The values in x must
be distinct. The sizes of xx and yy are
related as follows:If Y is a scalar or vector, yy has
the same size as xx. If Y is an array that is not a
vector,If xx is a scalar or vector, size(yy) equals [d1,
d2, ..., dk, length(xx)].If xx is an array of size [m1,m2,...,mj], size(yy) equals [d1,d2,...,dk,m1,m2,...,mj].pp = spline(x,Y) returns
the piecewise polynomial form of the cubic spline interpolant for
later use with ppval and the spline utility unmkpp. x must
be a vector with distinct values. Y can be a scalar,
a vector, or an array of any dimension, subject to the following conditions:If x and Y are
vectors of the same size, the not-a-knot end conditions are used.If x or Y is
a scalar, it is expanded to have the same length as the other and
the not-a-knot end conditions are used. (See Exceptions (1) below).If Y is a vector that contains
two more values than x has entries, the first and
last value in Y are used as the endslopes for the
cubic spline. (See Exceptions  (2) below.)ExceptionsIf Y is
a vector that contains two more values than x has
entries, the first and last value in Y are used
as the endslopes for the cubic spline. If Y is
a vector, this meansf(x) = Y(2:end-1)df(min(x)) = Y(1)df(max(x)) = Y(end)If Y is
a matrix or an N-dimensional array with size(Y,N) equal
to length(x)+2, the following hold:f(x(j)) matches the value Y(:,...,:,j+1) for j=1:length(x)Df(min(x)) matches Y(:,:,...:,1)Df(max(x)) matches Y(:,:,...:,end)Note  


You can also perform spline interpolation using the interp1 function with the command interp1(x,y,xx,'spline').
Note that while spline performs interpolation on
rows of an input matrix, interp1 performs interpolation
on columns of an input matrix.


Syntax

yy = spline(x,Y,xx)pp = spline(x,Y)


Example

Spline Interpolation of Sine DataOpen This ExampleThis generates a sine curve, then samples the spline over a finer mesh.x = 0:10;
y = sin(x);
xx = 0:.25:10;
yy = spline(x,y,xx);
plot(x,y,'o',xx,yy)

Spline Interpolation of Distribution and Specify Endpoint SlopesOpen This ExampleThis illustrates the use of clamped or complete spline interpolation where end slopes are prescribed. Zero slopes at the ends of an interpolant to the values of a certain distribution are enforced.x = -4:4;
y = [0 .15 1.12 2.36 2.36 1.46 .49 .06 0];
cs = spline(x,[0 y 0]);
xx = linspace(-4,4,101);
plot(x,y,'o',xx,ppval(cs,xx),'-');

Extrapolation Using Cubic SplineOpen This Example
The two vectorst = 1900:10:1990;
p = [ 75.995  91.972  105.711  123.203  131.669 ...
     150.697 179.323  203.212  226.505  249.633 ];
represent the census years from 1900 to 1990 and the corresponding United States population in millions of people. The expressionspline(t,p,2000)
uses the cubic spline to extrapolate and predict the population in the year 2000. The result is
ans =

  270.6060

Spline Interpolation of Angular DataOpen This Example
The statementsx = pi*[0:.5:2];
y = [0  1  0 -1  0  1  0;
     1  0  1  0 -1  0  1];
pp = spline(x,y);
yy = ppval(pp, linspace(0,2*pi,101));
plot(yy(1,:),yy(2,:),'-b',y(1,2:5),y(2,2:5),'or'), axis equal
generate the plot of a circle, with the five data points y(:,2),...,y(:,6) marked with o's. Note that this y contains two more values (i.e., two more columns) than does x, hence y(:,1) and y(:,end) are used as endslopes.
Spline Interpolation of Sine and Cosine DataOpen This ExampleThe following code generates sine and cosine curves, then samples the splines over a finer mesh.x = 0:.25:1;
Y = [sin(x); cos(x)];
xx = 0:.1:1;
YY = spline(x,Y,xx);
plot(x,Y(1,:),'o',xx,YY(1,:),'-')
hold on
plot(x,Y(2,:),'o',xx,YY(2,:),':')
hold off


Output / Return Value


Limitations


Alternatives / See Also


Reference