Rev 4104 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
\name{Diagonal}\alias{Diagonal}\alias{.symDiagonal}\title{Create Diagonal Matrix Object}\description{Create a diagonal matrix object, i.e., an object inheriting from\code{\linkS4class{diagonalMatrix}}.}\usage{Diagonal(n, x = NULL).symDiagonal(n, x = rep.int(1,n), uplo = "U")}\arguments{\item{n}{integer specifying the dimension of the (square) matrix. Ifmissing, \code{length(x)} is used.}\item{x}{numeric or logical; if missing, a \emph{unit} diagonal\eqn{n \times n}{n x n} matrix is created.}\item{uplo}{for \code{.symDiagonal}, the resulting sparse\code{\linkS4class{symmetricMatrix}} will have slot \code{uplo} setfrom this argument, either \code{"U"} or \code{"L"}. Only rarelywill it make sense to change this from the default.}}% \details{% ~~ If necessary, more details than the description above ~~% }\value{\code{Diagonal()} returns an object of class\code{\linkS4class{ddiMatrix}} or \code{\linkS4class{ldiMatrix}}(with \dQuote{superclass} \code{\linkS4class{diagonalMatrix}}).\code{.symDiagonal()} returns an object of class\code{\linkS4class{dsCMatrix}} or \code{\linkS4class{lsCMatrix}},i.e., a \emph{sparse} \emph{symmetric} matrix. This can bemore efficient than \code{Diagonal(n)} when the result is combinedwith further symmetric (sparse) matrices, however \emph{not} formatrix multiplications where \code{Diagonal()} is clearly preferred.}%\author{Martin Maechler}\seealso{the generic function \code{\link{diag}} for \emph{extraction}of the diagonal from a matrix works for all \dQuote{Matrices}.\code{\link{Matrix}}, class \code{\linkS4class{diagonalMatrix}}.}\examples{Diagonal(3)Diagonal(x = 10^(3:1))Diagonal(x = (1:4) >= 2)#-> "ldiMatrix"## Use Diagonal() + kronecker() for "repeated-block" matrices:M1 <- Matrix(0+0:5, 2,3)(M <- kronecker(Diagonal(3), M1))(S <- crossprod(Matrix(rbinom(60, size=1, prob=0.1), 10,6)))(SI <- S + 10*.symDiagonal(6)) # sparse symmetric stillstopifnot(is(SI, "dsCMatrix"))}\keyword{array}\keyword{algebra}