pdNeville {pdSpecEst} | R Documentation |
pdNeville
performs intrinsic polynomial interpolation of curves or surfaces of HPD matrices
in the metric space of HPD matrices equipped with the affine-invariant Riemannian metric (see (Bhatia 2009)[Chapter 6]
or (Pennec et al. 2006)) via Neville's algorithm based on iterative geodesic interpolation detailed
in (Chau and von
Sachs 2019) and in Chapter 3 and 5 of (Chau 2018).
pdNeville(P, X, x, metric = "Riemannian")
P |
for polynomial curve interpolation, a |
X |
for polynomial curve interpolation, a numeric vector of length |
x |
for polynomial curve interpolation, a numeric vector specifying the time points (locations) at which the
interpolating polynomial is evaluated. For polynomial surface interpolation, a list with as elements two numeric vectors
|
metric |
the metric on the space of HPD matrices, by default |
For polynomial curve interpolation, given N
control points (i.e., HPD matrices), the degree of the
interpolated polynomial is N - 1
. For polynomial surface interpolation, given N_1 \times N_2
control points
(i.e., HPD matrices) on a tensor product grid, the interpolated polynomial surface is of bi-degree (N_1 - 1, N_2 - 1)
.
Depending on the input array P
, the function decides whether polynomial curve or polynomial surface interpolation
is performed.
For polynomial curve interpolation, a (d, d, length(x))
-dimensional array corresponding to the interpolating polynomial
curve of (d,d)
-dimensional matrices of degree N-1
evaluated at times x
and passing through the control points P
at times X
. For polynomial surface interpolation, a (d, d, length(x$x), length(x$y))
-dimensional array corresponding to the
interpolating polynomial surface of (d,d)
-dimensional matrices of bi-degree N_1 - 1, N_2 - 1
evaluated at times expand.grid(x$x, x$y)
and passing through the control points P
at times expand.grid(X$x, X$y)
.
If metric = "Euclidean"
, the interpolating curve or surface may not be positive definite everywhere as the space of HPD
matrices equipped with the Euclidean metric has its boundary at a finite distance.
The function does not check for positive definiteness of the input matrices, and may fail if metric = "Riemannian"
and
the input matrices are close to being singular.
Bhatia R (2009).
Positive Definite Matrices.
Princeton University Press, New Jersey.
Chau J (2018).
Advances in Spectral Analysis for Multivariate, Nonstationary and Replicated Time Series.
phdthesis, Universite catholique de Louvain.
Chau J, von
Sachs R (2019).
“Intrinsic wavelet regression for curves of Hermitian positive definite matrices.”
Journal of the American Statistical Association.
doi: 10.1080/01621459.2019.1700129.
Pennec X, Fillard P, Ayache N (2006).
“A Riemannian framework for tensor computing.”
International Journal of Computer Vision, 66(1), 41–66.
### Polynomial curve interpolation
P <- rExamples1D(50, example = 'gaussian')$f[, , 10*(1:5)]
P.poly <- pdNeville(P, (1:5)/5, (1:50)/50)
## Examine matrix-component (1,1)
plot((1:50)/50, Re(P.poly[1, 1, ]), type = "l") ## interpolated polynomial
lines((1:5)/5, Re(P[1, 1, ]), col = 2) ## control points
### Polynomial surface interpolation
P.surf <- array(P[, , 1:4], dim = c(2,2,2,2)) ## control points
P.poly <- pdNeville(P.surf, list(x = c(0, 1), y = c(0, 1)), list(x = (0:10)/10, y = (0:10)/10))