dupl.prod {fastmatrix} | R Documentation |
Matrix multiplication envolving the duplication matrix
Description
Given the order of a duplication and a conformable matrix \bold{X}
, performs
one of the matrix-matrix operations:
-
\bold{Y} = \bold{DX}
, ifside = "left"
andtransposed = FALSE
, or -
\bold{Y} = \bold{D}^T\bold{X}
, ifside = "left"
andtransposed = TRUE
, or -
\bold{Y} = \bold{XD}
, ifside = "right"
andtransposed = FALSE
, or -
\bold{Y} = \bold{XD}^T
, ifside = "right"
andtransposed = TRUE
,
where \bold{D}
is the duplication matrix of order n
. The main aim of
dupl.prod
is to do this matrix multiplication without forming the
duplication matrix.
Usage
dupl.prod(n = 1, x, transposed = FALSE, side = "left")
Arguments
n |
order of the duplication matrix. |
x |
numeric matrix (or vector). |
transposed |
logical. Duplication matrix should be transposed? |
side |
a string selecting if duplication matrix is pre-multiplying |
Details
Underlying C
code only uses information provided by dupl.info
to
performs the matrix multiplication. The duplication matrix is never created.
See Also
Examples
D4 <- duplication(n = 4, matrix = TRUE)
x <- matrix(1, nrow = 16, ncol = 2)
y <- crossprod(D4, x)
z <- dupl.prod(n = 4, x, transposed = TRUE) # D4 is not stored
all(z == y) # matrices y and z are equal!