Evaluate the design matrix for the B-splines defined by `knots`

at the values in `x`

.

```
splineDesign(knots, x, ord = 4, derivs, outer.ok = FALSE,
sparse = FALSE)
spline.des (knots, x, ord = 4, derivs, outer.ok = FALSE,
sparse = FALSE)
```

knots

a numeric vector of knot positions (which will be sorted increasingly if needed).

x

a numeric vector of values at which to evaluate the B-spline
functions or derivatives. Unless `outer.ok`

is true, the
values in `x`

must be between the “inner” knots
`knots[ord]`

and `knots[ length(knots) - (ord-1)]`

.

ord

a positive integer giving the order of the spline function. This is the number of coefficients in each piecewise polynomial segment, thus a cubic spline has order 4. Defaults to 4.

derivs

an integer vector with values between `0`

and
`ord - 1`

, conceptually recycled to the length of `x`

.
The derivative of the given order is evaluated at the `x`

positions. Defaults to zero (or a vector of zeroes of the same
length as `x`

).

outer.ok

logical indicating if `x`

should be allowed
outside the *inner* knots, see the `x`

argument.

sparse

logical indicating if the result should inherit from class
`"sparseMatrix"`

(from package Matrix).

A matrix with `length(x)`

rows and `length(knots) - ord`

columns. The i'th row of the matrix contains the coefficients of the
B-splines (or the indicated derivative of the B-splines) defined by
the `knot`

vector and evaluated at the i'th value of `x`

.
Each B-spline is defined by a set of `ord`

successive knots so
the total number of B-splines is `length(knots) - ord`

.

# NOT RUN { require(graphics) splineDesign(knots = 1:10, x = 4:7) splineDesign(knots = 1:10, x = 4:7, deriv = 1) ## visualize band structure # } # NOT RUN { Matrix::drop0(zapsmall(6*splineDesign(knots = 1:40, x = 4:37, sparse = TRUE))) # } # NOT RUN { knots <- c(1,1.8,3:5,6.5,7,8.1,9.2,10) # 10 => 10-4 = 6 Basis splines x <- seq(min(knots)-1, max(knots)+1, length.out = 501) bb <- splineDesign(knots, x = x, outer.ok = TRUE) plot(range(x), c(0,1), type = "n", xlab = "x", ylab = "", main = "B-splines - sum to 1 inside inner knots") mtext(expression(B[j](x) *" and "* sum(B[j](x), j == 1, 6)), adj = 0) abline(v = knots, lty = 3, col = "light gray") abline(v = knots[c(4,length(knots)-3)], lty = 3, col = "gray10") lines(x, rowSums(bb), col = "gray", lwd = 2) matlines(x, bb, ylim = c(0,1), lty = 1) # }