当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R bandSparse 从(上/上)对角线构造稀疏带状矩阵


R语言 bandSparse 位于 Matrix 包(package)。

说明

通过指定其非零值和 super-diagonals 构造稀疏带状矩阵。

用法

bandSparse(n, m = n, k, diagonals, symmetric = FALSE,
           repr = "C", giveCsparse = (repr == "C"))

参数

n , m

矩阵维度

k

“diagonal numbers” 的整数向量,与 band(*, k) 具有相同的含义,即相对于主对角线,即 k=0

diagonals

可选的子/超对角线列表;如果缺少,结果将是一个模式矩阵,即继承自类 nMatrix

diagonals 也可以是 矩阵,其中 d <- length(k) 。在这种情况下,子对角线/超对角线取自 diagonals 的列,其中(通常)仅前几行用于 off-diagonals。

symmetric

逻辑性;如果为 true,则结果将是对称的(从类 symmetricMatrix 继承),并且仅必须指定上三角形或下三角形(通过 kdiagonals )。

repr

character 字符串, "C""T""R" 之一,指定用于结果的稀疏表示,即来自超类 CsparseMatrixTsparseMatrixRsparseMatrix 之一。

giveCsparse

(已弃用,替换为 repr ):逻辑指示结果应该是 CsparseMatrix 还是 TsparseMatrix ,默认值是 TRUE ,现在由 repr 确定;通常 Csparse 矩阵随后会更有效,但并非总是如此。

维度为 且对角线为 “bands” 的稀疏矩阵(class CsparseMatrix )。

例子


diags <- list(1:30, 10*(1:20), 100*(1:20))
s1 <- bandSparse(13, k = -c(0:2, 6), diag = c(diags, diags[2]), symm=TRUE)
s1
s2 <- bandSparse(13, k =  c(0:2, 6), diag = c(diags, diags[2]), symm=TRUE)
stopifnot(identical(s1, t(s2)), is(s1,"dsCMatrix"))

## a pattern Matrix of *full* (sub-)diagonals:
bk <- c(0:4, 7,9)
(s3 <- bandSparse(30, k = bk, symm = TRUE))

## If you want a pattern matrix, but with "sparse"-diagonals,
## you currently need to go via logical sparse:
lLis <- lapply(list(rpois(20, 2), rpois(20, 1), rpois(20, 3))[c(1:3, 2:3, 3:2)],
               as.logical)
(s4 <- bandSparse(20, k = bk, symm = TRUE, diag = lLis))
(s4. <- as(drop0(s4), "nsparseMatrix"))

n <- 1e4
bk <- c(0:5, 7,11)
bMat <- matrix(1:8, n, 8, byrow=TRUE)
bLis <- as.data.frame(bMat)
B  <- bandSparse(n, k = bk, diag = bLis)
Bs <- bandSparse(n, k = bk, diag = bLis, symmetric=TRUE)
B [1:15, 1:30]
Bs[1:15, 1:30]
## can use a list *or* a matrix for specifying the diagonals:
stopifnot(identical(B,  bandSparse(n, k = bk, diag = bMat)),
	  identical(Bs, bandSparse(n, k = bk, diag = bMat, symmetric=TRUE))
          , inherits(B, "dtCMatrix") # triangular!
)

也可以看看

band ,用于提取矩阵带; bdiagdiagsparseMatrixMatrix

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Construct Sparse Banded Matrix from (Sup-/Super-) Diagonals。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。