B_Spline

scalation.calculus.B_Spline
See theB_Spline companion object
class B_Spline(ττ: VectorD, mMax: Int, clamp: Boolean) extends BasisFunction

The B_Spline class provides B-Spline basis functions for various orders 'm', where the order is one more than the degree. A spline function is a piecewise polynomial function where the pieces are stitched together at knots with the goal of maintaining continuity and differentiability. B-Spline basis functions form a popular form of basis functions used in Functional Data Analysis.

Value parameters

clamp

flag for augmenting ττ

mMax

the maximum order, allowing splines orders from 1 to mMax

ττ

the time-points of the original knots in the time dimension

Attributes

See also
Companion
object
Graph
Supertypes
class Object
trait Matchable
class Any
Known subtypes
class DB_Spline

Members list

Value members

Concrete methods

override def abf_(m: Int)(t: Double): VectorD

Evaluate each of the τ.dim-1-many order m B-spline basis functions at t non-recursively, using an efficient dynamic programming approach. ==Example==

Evaluate each of the τ.dim-1-many order m B-spline basis functions at t non-recursively, using an efficient dynamic programming approach. ==Example==

val m = 4                       // order m (degree m-1)
val t = VectorD (1, 2, 3, 4)    // original time points
val N = B_Spline (t, k)         // B_Spline instance
val z = N.abf_ (m)(t)           // vector of evaluations
println ("order k basis functions at t = z")

==Implementation Details== Let N(m)(i) denote the i-th order k basis function evaluated at t. Then each N(m)(i) depends on the evaluation of N(m-1)(i) and N(m-1)(i+1). Here is an example, given a set of order m=4 B-spline basis functions and knot vector τ of length n:

N(1)(0), N(1)(1), N(1)(2), N(1)(3), ..., N(1)(n-1)
      |/       |/       |/            |/
N(2)(0), N(2)(1), N(2)(2), ..., N(2)(n-2)
      |/       |/            |/
N(3)(0), N(3)(1), ..., N(3)(n-3)
      |/            |/
N(4)(0), ..., N(4)(n-4)

This algorithm applies the procedure described above using O(n) storage and O(k*n) floating point operations.

Value parameters

t

point to evaluate

Attributes

See also

Carl de Boor (1978). A Practical Guide to Splines. Springer-Verlag. ISBN 3-540-90356-9.

Definition Classes
def bb(m: Int)(j: Int)(t: Double): Double

Order 'm' B-Spline basis functions (general recurrence).

Order 'm' B-Spline basis functions (general recurrence).

Value parameters

j

indicates which spline function

m

the order of the spline function (degree = order - 1)

t

the time parameter

Attributes

def bf(m: Int)(j: Int)(t: Double): Double

Evaluate the 'j+1'-th order m B-spline basis function at t non-recursively, using an efficient dynamic programming approach. ==Example==

Evaluate the 'j+1'-th order m B-spline basis function at t non-recursively, using an efficient dynamic programming approach. ==Example==

val m = 4                       // order m (degree m-1)
val t = VectorD (1, 2, 3, 4)    // original time points
val N = B_Spline (t, k)         // B_Spline instance
val j = 0                       // spline j in N.range(m)
val z = N.bf (m)(j)(t(2))       // evaluate at t(2)
println ("order k basis function j at t(2) = z")

==Implementation Details== Let N(m)(i) denote the i-th order k basis function evaluated at t. Then each N(m)(i) depends on the evaluation of N(m-1)(i) and N(m-1)(i+1). Here is an example, given a set of order m=4 B-spline basis functions and knot vector τ of length n:

N(1)(0), N(1)(1), N(1)(2), N(1)(3)
      |/       |/       |/
N(2)(0), N(2)(1), N(2)(2)
      |/       |/
N(3)(0), N(3)(1)
      |/
N(4)(0)

This algorithm applies the procedure described above using O(k) storage and O(k*k) floating point operations.

Value parameters

t

point to evaluate

Attributes

See also

Carl de Boor (1978). A Practical Guide to Splines. Springer-Verlag. ISBN 3-540-90356-9.

def bfr(m: Int)(j: Int)(t: Double): Double

Adjusted order 'm' B-Spline basis functions (general recurrence). These are adjusted so that the first "usable" spline is at j = 0. The valid range of usable splines is defined in range.

Adjusted order 'm' B-Spline basis functions (general recurrence). These are adjusted so that the first "usable" spline is at j = 0. The valid range of usable splines is defined in range.

Value parameters

j

indicates which spline function

m

the order of the spline function (degree = order - 1)

t

the time parameter

Attributes

def getOrder: Int

Retrieve the order of the this B_Spline.

Retrieve the order of the this B_Spline.

Attributes

def range(m: Int): Range

Range of "usable" splines when using the bs function. This is needed, since extra splines may be generated by the general B-spline recurrence.

Range of "usable" splines when using the bs function. This is needed, since extra splines may be generated by the general B-spline recurrence.

Value parameters

m

the order of the spline

Attributes

def size(m: Int): Int

The number of usable spline basis functions for a specified order, given the configured knot vector.

The number of usable spline basis functions for a specified order, given the configured knot vector.

Value parameters

m

the order of the spline

Attributes

Inherited methods

def abf(m: Int)(t: VectorD): MatrixD

Obtain the value of the m-th order basis functions (all) at time 't'. Or alternatively, obtain the basis function by calling bf(m)(j) only. Ex: val x = bf(m)(t) retrieves the value of all the basis functions at 't'. val f = bf(m) retrieves all the basis functions.

Obtain the value of the m-th order basis functions (all) at time 't'. Or alternatively, obtain the basis function by calling bf(m)(j) only. Ex: val x = bf(m)(t) retrieves the value of all the basis functions at 't'. val f = bf(m) retrieves all the basis functions.

Value parameters

m

the order of all the basis function

t

the time parameter

Attributes

Inherited from:
BasisFunction
def apply(m: Int)(j: Int)(t: Double): Double

Obtain the value of the m-th order 'j'-th basis function at time 't'. Or alternatively, obtain the basis function by calling bf(m)(j) only. Ex: val x = bf(m)(j)(t) retrieves the value of the j-th basis function at 't'. val f = bf(m)(j) retrieves the j-th basis function.

Obtain the value of the m-th order 'j'-th basis function at time 't'. Or alternatively, obtain the basis function by calling bf(m)(j) only. Ex: val x = bf(m)(j)(t) retrieves the value of the j-th basis function at 't'. val f = bf(m)(j) retrieves the j-th basis function.

Value parameters

j

indicates which basis function

m

the order of the basis function

t

the time parameter

Attributes

Inherited from:
BasisFunction
def bf1(j: Int)(t: Double): Double

Obtain the value of the 1st order 'j'-th basis function at time 't'. Or alternatively, obtain the basis function by calling bf1(j) only. Ex: val x = bf1(j)(t) retrieves the value of the j-th basis function at 't'. val f = bf1(j) retrieves the j-th basis function.

Obtain the value of the 1st order 'j'-th basis function at time 't'. Or alternatively, obtain the basis function by calling bf1(j) only. Ex: val x = bf1(j)(t) retrieves the value of the j-th basis function at 't'. val f = bf1(j) retrieves the j-th basis function.

Value parameters

j

indicates which basis function

t

the time parameter

Attributes

Inherited from:
BasisFunction
def bf2(j: Int)(t: Double): Double

Obtain the value of the 2nd order 'j'-th basis function at time 't'. Or alternatively, obtain the basis function by calling bf2(j) only. Ex: val x = bf2(j)(t) retrieves the value of the j-th basis function at 't'. val f = bf2(j) retrieves the j-th basis function.

Obtain the value of the 2nd order 'j'-th basis function at time 't'. Or alternatively, obtain the basis function by calling bf2(j) only. Ex: val x = bf2(j)(t) retrieves the value of the j-th basis function at 't'. val f = bf2(j) retrieves the j-th basis function.

Value parameters

j

indicates which basis function

t

the time parameter

Attributes

Inherited from:
BasisFunction
def bf3(j: Int)(t: Double): Double

Obtain the value of the 3rd order 'j'-th basis function at time 't'. Or alternatively, obtain the basis function by calling bf3(j) only. Ex: val x = bf3(j)(t) retrieves the value of the j-th basis function at 't'. val f = bf3(j) retrieves the j-th basis function.

Obtain the value of the 3rd order 'j'-th basis function at time 't'. Or alternatively, obtain the basis function by calling bf3(j) only. Ex: val x = bf3(j)(t) retrieves the value of the j-th basis function at 't'. val f = bf3(j) retrieves the j-th basis function.

Value parameters

j

indicates which basis function

t

the time parameter

Attributes

Inherited from:
BasisFunction
def bf4(j: Int)(t: Double): Double

Obtain the value of the 4th order 'j'-th basis function at time 't'. Or alternatively, obtain the basis function by calling bf4(j) only. Ex: val x = bf4(j)(t) retrieves the value of the j-th basis function at 't'. val f = bf4(j) retrieves the j-th basis function.

Obtain the value of the 4th order 'j'-th basis function at time 't'. Or alternatively, obtain the basis function by calling bf4(j) only. Ex: val x = bf4(j)(t) retrieves the value of the j-th basis function at 't'. val f = bf4(j) retrieves the j-th basis function.

Value parameters

j

indicates which basis function

t

the time parameter

Attributes

Inherited from:
BasisFunction
def count(m: Int): Int

The number of basis functions for a specified order.

The number of basis functions for a specified order.

Value parameters

m

the order of the basis function

Attributes

Inherited from:
BasisFunction
def dot_(m: Int)(i: Int, j: Int)(g: BasisFunction, a: Double, b: Double): Double

Compute the dot/inner product of 'this' basis function object and basis function 'g'.

Compute the dot/inner product of 'this' basis function object and basis function 'g'.

Value parameters

a

the start of the interval

b

the end of the interval

g

the other function

i

indicates which basis function of 'this'

j

indicates which basis function of 'g'

m

the order of the basis function

Attributes

Inherited from:
BasisFunction
def getCache(m: Int, t: VectorD): Array[MatrixD]

Retrieve the cached design matrices.

Retrieve the cached design matrices.

Attributes

Inherited from:
BasisFunction
def recomputeCache: Unit

Recompute cached matrices.

Recompute cached matrices.

Attributes

Inherited from:
BasisFunction