Calculate the distance between functional objects over the defined range.

fdistmatrix(fd, subrange, distmethod)

Arguments

fd

A functional data object fd of fda package.

subrange

A vector of two values indicating the value range of functional object to calculate on.

distmethod

The method for calculating the distance matrix. Choose between "usc" and "manual". "usc" uses fda.usc::metric.lp() function while "manual" uses squared distance between functions. See Details.

Value

A distance matrix with diagonal value and the upper half.

Details

If choosing distmethod = "manual", the L2 distance between all pairs of functions \(y_i(t)\) and \(y_j(t)\) is given by: $$d_R(y_i, y_j) = \sqrt{\int_{a_r}^{b_r} [y_i(t) - y_j(t)]^2 dt}.$$

Examples

library(fda) # Examples taken from fda::Data2fd() data(gait) # Function only works on two dimensional data gait <- gait[, 1:5, 1] gaitbasis3 <- create.fourier.basis(nbasis = 5) gaitfd3 <- Data2fd(gait, basisobj = gaitbasis3)
#> 'y' is missing, using 'argvals' #> 'argvals' is missing; using seq( 0 , 1 , length= 20 )
fdistmatrix(gaitfd3, c(0.2, 0.4), "usc")
#> boy1 boy2 boy3 boy4 boy5 #> boy1 0.000000 1.508725 2.702666 2.959672 6.555149 #> boy2 1.508725 0.000000 2.089777 3.740105 7.326595 #> boy3 2.702666 2.089777 0.000000 5.570693 9.180862 #> boy4 2.959672 3.740105 5.570693 0.000000 3.643998 #> boy5 6.555149 7.326595 9.180862 3.643998 0.000000