如何在 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
廣告