These functions calculate a tensor cosine basis representation for
functional data on two- or three-dimensional domains based on a
discrete cosine transformation (DCT) using the C-library fftw3
(http://www.fftw.org/). Coefficients under a given threshold are
set to 0 to reduce complexity and for denoising.
dctBasis2D(funDataObject, qThresh, parallel = FALSE)dctBasis3D(funDataObject, qThresh, parallel = FALSE)
A sparseMatrix
of scores
(coefficients) with dimension N x K
, reflecting the weights
\(\theta_{mn}\) (\(\theta_{mnk}\)) for each basis function in
each observation, where K
is the total number of basis
functions used.
A diagonal matrix, giving the norms of the different basis functions used (as they are orthogonal).
Logical, set to FALSE
, as basis functions are
orthogonal, but in general not orthonormal.
NULL
, as basis functions are known.
An object of class funData
containing the observed functional data samples and for which the
basis representation is calculated.
A numeric with value in \([0,1]\), giving the quantile for thresholding the coefficients. See Details.
Logical. If TRUE
, the coefficients for the basis
functions are calculated in parallel. The implementation is based on
the foreach
function and requires a parallel
backend that must be registered before; see
foreach
for details. Defaults to FALSE
.
If the C-library fftw3
is not available when
the package MFPCA
is installed, this function is disabled an
will throw an error. For full functionality install the C-library
fftw3
from http://www.fftw.org/ and reinstall
MFPCA
. This function has not been tested with
ATLAS/MKL/OpenBLAS.
Given the (discretized) observed functions \(X_i\), the function
dctBasis2D
calculates a basis representation $$X_i(s,t) =
\sum_{m = 0}^{K_1-1} \sum_{n = 0}^{K_2-1} \theta_{mn} f_{mn}(s,t)$$ of a
two-dimensional function \(X_i(s,t)\) in terms of (orthogonal) tensor
cosine basis functions $$f_{mn}(s,t) = c_m c_n \cos(ms) \cos(nt),
\quad (s,t) \in \mathcal{T}$$ with \(c_m = \frac{1}{\sqrt{\pi}}\) for
\(m=0\) and \(c_m = \sqrt{\frac{2}{\pi}}\) for \(m=1,2,\ldots\)
based on a discrete cosine transform (DCT).
If not thresholded (qThresh = 0
), the function returns all
non-zero coefficients \(\theta_{mn}\) in the basis representation in
a sparseMatrix
(package Matrix) called
scores
. Otherwise, coefficients with $$|\theta_{mn}| <= q $$
are set to zero, where \(q\) is the qThresh
-quantile of
\(|\theta_{mn}|\).
For functions \(X_i(s,t,u)\) on three-dimensional domains, the
function dctBasis3D
calculates a basis representation
$$X_i(s,t,u) = \sum_{m = 0}^{K_1-1} \sum_{n = 0}^{K_2-1} \sum_{k =
0}^{K_3-1} \theta_{mnk} f_{mnk}(s,t,u)$$ in terms of (orthogonal) tensor
cosine basis functions $$f_{mnk}(s,t,u) = c_m c_n c_k \cos(ms)
\cos(nt) \cos(ku), \quad (s,t,u) \in \mathcal{T}$$ again with
\(c_m = \frac{1}{\sqrt{pi}}\) for \(m=0\) and \(c_m =
\sqrt{\frac{2}{pi}}\) for \(m=1,2,\ldots\) based on a discrete cosine
transform (DCT). The thresholding works analogous as for the
two-dimensional case.
univDecomp
, dct2D
,
dct3D