comm.prod: Matrix multiplication envolving the commutation matrix

View source: R/commutation.R

comm.prodR Documentation

Matrix multiplication envolving the commutation matrix

Description

Given the row and column dimensions of a commutation matrix \bold{K} of order mn and a conformable matrix \bold{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.

The main aim of comm.prod is to do this matrix multiplication without forming the commutation matrix.

Usage

comm.prod(m = 1, n = m, x = NULL, transposed = FALSE, side = "left")

Arguments

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 x, that is side = "left" or post-multiplying x, by using side = "right".

Details

Underlying Fortran code only uses information provided by comm.info to performs the matrix multiplication. The commutation matrix is never created.

See Also

commutation

Examples

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!

fastmatrix documentation built on Sept. 11, 2024, 7:22 p.m.