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


R Diagonal 构建对角矩阵


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

说明

构造一个正式的对角线 Matrix ,即从虚拟类 diagonalMatrix 继承的对象(或者,如果需要,一个数学对角线 CsparseMatrix )。

用法

Diagonal(n, x = NULL, names = FALSE)

.sparseDiagonal(n, x = NULL, uplo = "U", shape = "t", unitri = TRUE, kind, cols)
    .trDiagonal(n, x = NULL, uplo = "U", unitri = TRUE, kind)
   .symDiagonal(n, x = NULL, uplo = "U", kind)

参数

n

指示(方)矩阵维度的整数。如果丢失,则使用length(x)

x

列出对角线条目的值的数字或逻辑向量,根据需要回收。如果NULL(默认值),则结果是单位对角矩阵。 .sparseDiagonal() 和朋友在 kind = "n" 时忽略非 NULL x

names

logical TRUEFALSElength ncharacter 向量。如果为 true 并且 names(x) 不是 NULL ,则将其用作结果矩阵的行名称和列名称。当是字符向量时,将其用于两个暗名称。

uplo

c("U","L") 之一,如果结果是形式上对称的三角形,则指定结果的 uplo 槽。

shape

c("t","s","g") 之一,指示结果是否应为形式三角形、对称或“general”。结果将分别继承自虚拟类 triangularMatrixsymmetricMatrixgeneralMatrix

unitri

逻辑指示对角线上有 1 的形式三角形结果是否应该是形式单位三角形,即 diag 槽等于 "U" 而不是 "N"

kind

c("d","l","n") 之一,指示结果的 “mode”:数字、逻辑或模式。结果将分别继承自虚拟类 dsparseMatrixlsparseMatrixnsparseMatrix 。当x 为非NULL 时,忽略"n" 以外的值;在这种情况下,模式由 typeof(x) 确定。

cols

可选整数向量,其值在 0:(n-1) 中,索引指定对角矩阵的列。如果指定,则结果(在数学上)为 D[, cols+1] 而不是 D ,其中 D = Diagonal(n, x) ,并且它始终为 “general” (即忽略 shape )。

Diagonal() 返回一个继承自虚拟类 diagonalMatrix 的对象。

.sparseDiagonal() 返回 Diagonal(n, x)CsparseMatrix 表示,或者,如果给出 cols,则返回 Diagonal(n, x)[, cols+1] 的表示。结果的精确类别取决于 shapekind

.trDiagonal().symDiagonal() 分别是 .sparseDiagonal(shape = "t").sparseDiagonal(shape = "s") 的简单包装器。

.sparseDiagonal() 的存在主要是为了利用可用于 CsparseMatrix 的高效 C-level 方法。

例子


Diagonal(3)
Diagonal(x = 10^(3:1))
Diagonal(x = (1:4) >= 2)#-> "ldiMatrix"

## Use Diagonal() + kronecker() for "repeated-block" matrices:
M1 <- Matrix(0+0:5, 2,3)
(M <- kronecker(Diagonal(3), M1))

(S <- crossprod(Matrix(rbinom(60, size=1, prob=0.1), 10,6)))
(SI <- S + 10*.symDiagonal(6)) # sparse symmetric still
stopifnot(is(SI, "dsCMatrix"))
(I4 <- .sparseDiagonal(4, shape="t"))# now (2012-10) unitriangular
stopifnot(I4@diag == "U", all(I4 == diag(4)))

作者

Martin Maechler

也可以看看

用于从矩阵中提取对角线的通用函数diag适用于所有“Matrices”。

bandSparse 从其非零子/超对角线构造带状稀疏矩阵。 band(A) 返回一个带状矩阵,其中包含 A 的一些子/上对角线。

Matrix 用于一般矩阵构造;此外,类 diagonalMatrix

相关用法


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