kronecker                package:base                R Documentation

Kronecker products on arrays

Description:

     Computes the generalised kronecker product of two arrays, `X' and
     `Y'.  `kronecker(X, Y)' returns an array `A' with dimensions
     `dim(X) * dim(Y)'.

Usage:

     kronecker(X, Y, FUN = "*", make.dimnames = FALSE, ...)
     X %x% Y

Arguments:

       X: A vector or array.

       Y: A vector or array.

     FUN: a function; it may be a quoted string.

make.dimnames: Provide dimnames that are the product of the dimnames of
          `X' and `Y'.

     ...: optional arguments to be passed to `FUN'.

Details:

     If `X' and `Y' do not have the same number of dimensions, the
     smaller array is padded with dimensions of size one.  The returned
     array comprises submatrices constructed by taking `X' one term at
     a time and expanding that term as `FUN(x, Y, ...)'.

     `%x%' is an alias for `kronecker' (where `FUN' is hardwired to
     `"*"').

Author(s):

     Jonathan Rougier, J.C.Rougier@durham.ac.uk

References:

     Matrix Algebra Useful for Statistics, Shayle R. Searle, John Wiley
     and Sons, 1982.

See Also:

     `outer', on which `kronecker' is built and `matmult' for usual
     matrix multiplication.

Examples:

     # simple scalar multiplication
     ( M <- matrix(1:6, ncol=2) )
     stopifnot(kronecker(4, M)==4 * M)
     # Block diagonal matrix:
     stopifnot(kronecker(diag(1, 3), M) == diag(1, 3) %x% M)

     # ask for dimnames

     fred <- matrix(1:12, 3, 4, dimnames=list(LETTERS[1:3], LETTERS[4:7]))
     bill <- c("happy" = 100, "sad" = 1000)
     kronecker(fred, bill, make.dimnames = TRUE)

     bill <- outer(bill, c("cat"=3, "dog"=4))
     kronecker(fred, bill, make.dimnames = TRUE)

