當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。