| comm.prod {fastmatrix} | R Documentation |
Given the row and column dimension of a commutation and matrix x, performs
one of the matrix-matrix operations:
\bold{Y} = \bold{KX}, if side = "left" and transposed = FALSE, or
\bold{Y} = \bold{K}^T\bold{X}, if side = "left" and transposed = TRUE, or
\bold{Y} = \bold{XK}, if side = "right" and transposed = FALSE, or
\bold{Y} = \bold{XK}^T, if side = "right" and transposed = TRUE,
where \bold{K} is the commutation matrix of order mn. The main aim of
comm.prod is to do this matrix multiplication without forming the
commutation matrix.
comm.prod(m = 1, n = m, x = NULL, transposed = FALSE, side = "left")
m |
a positive integer row dimension. |
n |
a positive integer column dimension. |
x |
numeric matrix (or vector). |
transposed |
logical. Commutation matrix should be transposed? |
side |
a string selecting if commutation matrix is pre-multiplying |
Underlying Fortran code only uses information provided by comm.info
to performs the matrix multiplication. The commutation matrix is never created.
K42 <- commutation(m = 4, n = 2, matrix = TRUE) x <- matrix(1:24, ncol = 3) y <- K42 %*% x z <- comm.prod(m = 4, n = 2, x) # K42 is not stored all(z == y) # matrices y and z are equal!