band-methods {Matrix} | R Documentation |
Extract bands of a matrix
Description
Return the matrix obtained by setting to zero elements below a diagonal
(triu
), above a diagonal (tril
), or outside of a general
band (band
).
Usage
band(x, k1, k2, ...)
triu(x, k = 0L, ...)
tril(x, k = 0L, ...)
Arguments
x |
a matrix-like object |
k , k1 , k2 |
integers specifying the diagonals that are not set to
zero, |
... |
optional arguments passed to methods, currently unused by package Matrix. |
Details
triu(x, k)
is equivalent to band(x, k, dim(x)[2])
.
Similarly,
tril(x, k)
is equivalent to band(x, -dim(x)[1], k)
.
Value
An object of a suitable matrix class, inheriting from
triangularMatrix
where appropriate.
It inherits from sparseMatrix
if
and only if x
does.
Methods
- x = "CsparseMatrix"
method for compressed, sparse, column-oriented matrices.
- x = "RsparseMatrix"
method for compressed, sparse, row-oriented matrices.
- x = "TsparseMatrix"
method for sparse matrices in triplet format.
- x = "diagonalMatrix"
method for diagonal matrices.
- x = "denseMatrix"
method for dense matrices in packed or unpacked format.
- x = "matrix"
method for traditional matrices of implicit class
matrix
.
See Also
bandSparse
for the construction of a
banded sparse matrix directly from its non-zero diagonals.
Examples
## A random sparse matrix :
set.seed(7)
m <- matrix(0, 5, 5)
m[sample(length(m), size = 14)] <- rep(1:9, length=14)
(mm <- as(m, "CsparseMatrix"))
tril(mm) # lower triangle
tril(mm, -1) # strict lower triangle
triu(mm, 1) # strict upper triangle
band(mm, -1, 2) # general band
(m5 <- Matrix(rnorm(25), ncol = 5))
tril(m5) # lower triangle
tril(m5, -1) # strict lower triangle
triu(m5, 1) # strict upper triangle
band(m5, -1, 2) # general band
(m65 <- Matrix(rnorm(30), ncol = 5)) # not square
triu(m65) # result not "dtrMatrix" unless square
(sm5 <- crossprod(m65)) # symmetric
band(sm5, -1, 1)# "dsyMatrix": symmetric band preserves symmetry property
as(band(sm5, -1, 1), "sparseMatrix")# often preferable
(sm <- round(crossprod(triu(mm/2)))) # sparse symmetric ("dsC*")
band(sm, -1,1) # remains "dsC", *however*
band(sm, -2,1) # -> "dgC"