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


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。