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


R diagU2N 將三角矩陣從單位三角形變換到一般三角形並返回


R語言 diagU2N 位於 Matrix 包(package)。

說明

將三角形矩陣 x ,即 class triangularMatrix ,從(內部!)單位三角形 (“unitriangular”) 轉換為 “general” 三角形 ( diagU2N(x) ) 或返回 ( diagN2U(x) )。請注意,後者 diagN2U(x) 也會在 diag(x) 不全為 1 的情況下將對角線設置為 1。

.diagU2N(x).diagN2U(x) 在不檢查的情況下假設 x 是具有合適的 diag 插槽的 triangularMatrix(分別為 "U""N" ),因此應謹慎使用它們。

用法

 diagU2N(x, cl = getClassDef(class(x)), checkDense = FALSE)
 diagN2U(x, cl = getClassDef(class(x)), checkDense = FALSE)

.diagU2N(x, cl = getClassDef(class(x)), checkDense = FALSE)
.diagN2U(x, cl = getClassDef(class(x)), checkDense = FALSE)

參數

x

triangularMatrix ,通常稀疏。

cl

(可選,僅用於加速:) x 的類(定義)。

checkDense

邏輯表明是否應該考慮稠密(參見denseMatrix)矩陣;即,當為 false 時,默認情況下,即使 x 很密集,結果也將是稀疏的。

細節

帶有 diag"U" 的單位三角矩陣的概念源於 LAPACK。

相同 class 但具有不同 diag 槽的三角矩陣。對於 diagU2N (語義上)與 x 具有相同條目的情況,而在 diagN2U(x) 中,非對角線條目保持不變,並且對角線設置為所有 1,即使以前不是。

注意

此類內部存儲詳細信息很少與用戶相關。因此,這些函數實際上是相當內部的實用程序。

例子


(T <- Diagonal(7) + triu(Matrix(rpois(49, 1/4), 7, 7), k = 1))
(uT <- diagN2U(T)) # "unitriangular"
(t.u <- diagN2U(10*T))# changes the diagonal!
stopifnot(all(T == uT), diag(t.u) == 1,
          identical(T, diagU2N(uT)))
T[upper.tri(T)] <- 5 # still "dtC"
T <- diagN2U(as(T,"triangularMatrix"))
dT <- as(T, "denseMatrix") # (unitriangular)
dT.n <- diagU2N(dT, checkDense = TRUE)
sT.n <- diagU2N(dT)
stopifnot(is(dT.n, "denseMatrix"), is(sT.n, "sparseMatrix"),
          dT@diag == "U", dT.n@diag == "N", sT.n@diag == "N",
          all(dT == dT.n), all(dT == sT.n))

也可以看看

"triangularMatrix""dtCMatrix"

相關用法


注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Transform Triangular Matrices from Unit Triangular to General Triangular and Back。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。