如何使用R中的矩阵创建块对角矩阵?

要使用 R 中的矩阵创建块对角矩阵,我们可以使用 Matrix 包的 bdiag 函数。

例如,如果我们有一个名为 M 的矩阵,并且我们想通过使用以下命令使用 M 4 次创建块对角线 -

bdiag(replicate(4,M,simplify=FALSE))

查看下面给出的示例以了解如何完成。

示例 1

以下代码段创建了一个示例矩阵 -

M1<-matrix(rpois(9,5),ncol=3)

M1

创建以下矩阵 -

   [,1] [,2] [,3]

[1,] 9    3   10

[2,] 4    4    2

[3,] 5    8    2

要使用上面创建的矩阵上的 R 中的矩阵创建块对角矩阵,请将以下代码添加到上面的代码段中 -

M1<-matrix(rpois(9,5),ncol=3)

library(Matrix)

bdiag(replicate(3,M1,simplify=FALSE))

输出结果

如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出 -

9 x 9 sparse Matrix of class "dgCMatrix"

[1,] 9 3 10 . . . . . .

[2,] 4 4  2 . . . . . .

[3,] 5 8  2 . . . . . .

[4,] . . . 9 3 10 . . .

[5,] . . . 4 4  2 . . .

[6,] . . . 5 8  2 . . .

[7,] . . . . . . 9 3 10

[8,] . . . . . . 4 4  2

[9,] . . . . . . 5 8  2

示例 2

以下代码段创建了一个示例矩阵 -

M2<-matrix(rpois(4,2),ncol=2)

M2

创建以下矩阵 -

  [,1] [,2]

[1,] 1  2

[2,] 4  1

要使用上面创建的矩阵上的 R 中的矩阵创建块对角矩阵,请将以下代码添加到上面的代码段中 -

M2<-matrix(rpois(4,2),ncol=2)

library(Matrix)

bdiag(replicate(6,M2,simplify=FALSE))

输出结果

如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出 -

12 x 12 sparse Matrix of class "dgCMatrix"

[1,] 1 2 . . . . . . . . . .

[2,] 4 1 . . . . . . . . . .

[3,] . . 1 2 . . . . . . . .

[4,] . . 4 1 . . . . . . . .

[5,] . . . . 1 2 . . . . . .

[6,] . . . . 4 1 . . . . . .

[7,] . . . . . . 1 2 . . . .

[8,] . . . . . . 4 1 . . . .

[9,] . . . . . . . . 1 2 . .

[10,] . . . . . . . . 4 1 . .

[11,] . . . . . . . . . . 1 2

[12,] . . . . . . . . . . 4 1

示例 3

以下代码段创建了一个示例矩阵 -

M3<-matrix(round(rnorm(16),2),ncol=4)

M3

创建以下矩阵 -

      [,1]  [,2] [,3]  [,4]

[1,] -0.61 -1.41  0.46  0.67

[2,] -0.08 -0.69 -0.92 -0.61

[3,] -0.44 -0.48 -0.09 -0.42

[4,] -1.79  0.45  1.34 -0.76

要使用上面创建的矩阵上的 R 中的矩阵创建块对角矩阵,请将以下代码添加到上面的代码段中 -

M3<-matrix(round(rnorm(16),2),ncol=4)

library(Matrix)

bdiag(replicate(2,M3,simplify=FALSE))

输出结果

如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出 -

8 x 8 sparse Matrix of class "dgCMatrix"

[1,] -0.61 -1.41  0.46  0.67 . . . .

[2,] -0.08 -0.69 -0.92 -0.61 . . . .

[3,] -0.44 -0.48 -0.09 -0.42 . . . .

[4,] -1.79  0.45  1.34 -0.76 . . . .

[5,]   .    .     .       . -0.61 -1.41  0.46  0.67

[6,]   .    .     .       . -0.08 -0.69 -0.92 -0.61

[7,]   .    .     .       . -0.44 -0.48 -0.09 -0.42

[8,]   .    .     .       . -1.79  0.45  1.34 -0.76

示例 4

以下代码段创建了一个示例矩阵 -

M4<-matrix(round(rnorm(9),2),ncol=3)

M4

创建以下矩阵 -

      [,1] [,2] [,3]

[1,] -0.11  1.49  0.86

[2,] -0.06 -0.39  0.96

[3,]  1.29 -2.67 -0.03

要使用上面创建的矩阵上的 R 中的矩阵创建块对角矩阵,请将以下代码添加到上面的代码段中 -

M4<-matrix(round(rnorm(9),2),ncol=3)

library(Matrix)

bdiag(replicate(3,M4,simplify=FALSE))

输出结果

如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出 -

9 x 9 sparse Matrix of class "dgCMatrix"

[1,] -0.11  1.49  0.86 . . . . . .

[2,] -0.06 -0.39  0.96 . . . . . .

[3,]  1.29 -2.67 -0.03 . . . . . .

[4,]   .    .     . -0.11  1.49  0.86 .   .   .

[5,]   .    .     . -0.06 -0.39  0.96 .   .   .

[6,]   .    .     .  1.29 -2.67 -0.03 .   .   .

[7,]   .    .     .    .   .     . -0.11  1.49  0.86

[8,]   .    .     .    .   .     . -0.06 -0.39  0.96

[9,]   .    .     .    .   .     .  1.29 -2.67 -0.03

例 5

以下代码段创建了一个示例矩阵 -

M5<-matrix(rpois(4,10),ncol=2)

M5

创建以下矩阵 -

   [,1] [,2]

[1,] 10  6

[2,] 5  17

要使用上面创建的矩阵上的 R 中的矩阵创建块对角矩阵,请将以下代码添加到上面的代码段中 -

M5<-matrix(rpois(4,10),ncol=2)

library(Matrix)

bdiag(replicate(5,M5,simplify=FALSE))

输出结果

如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出 -

10 x 10 sparse Matrix of class "dgCMatrix"

[1,] 10 6 . . . . . . . .

[2,] 5 17 . . . . . . . .

[3,] . . 10 6 . . . . . .

[4,] . . 5 17 . . . . . .

[5,] . . . . 10 6 . . . .

[6,] . . . . 5 17 . . . .

[7,] . . . . . . 10 6 . .

[8,] . . . . . . 5 17 . .

[9,] . . . . . . . . 10 6

[10,] . . . . . . . . 5 17

以上是 如何使用R中的矩阵创建块对角矩阵? 的全部内容, 来源链接: utcz.com/z/350413.html

回到顶部