如何在对角线内的块中创建一个零的矩阵?

时间:2018-05-14 13:44:02

标签: r

所以我试图创建一个2000 * 2000矩阵,沿着对角线有50 * 50个零块,而其他地方都有1个零块。

这是我的意思的缩影。 a是一个6x6矩阵,带有1' s,每个块是一个2 * 2矩阵,沿对角线有零

a <- matrix(rep(1, times = 36), nrow = 6, byrow = TRUE)

a[1:2,1:2] <- 0
a[3:4,3:4] <- 0
a[5:6,5:6] <- 0

给予

     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    0    0    1    1    1    1
[2,]    0    0    1    1    1    1
[3,]    1    1    0    0    1    1
[4,]    1    1    0    0    1    1
[5,]    1    1    1    1    0    0
[6,]    1    1    1    1    0    0

当然,我选择的代码对于创建这么大的矩阵是不好的,因为我必须重复50次底部。

创建这种类型的矩阵会有什么更好的代码?

1 个答案:

答案 0 :(得分:2)

rawr是对的,

a <- +!kronecker(diag(1, 3), matrix(1, 2, 2))

给出

     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    0    0    1    1    1    1
[2,]    0    0    1    1    1    1
[3,]    1    1    0    0    1    1
[4,]    1    1    0    0    1    1
[5,]    1    1    1    1    0    0
[6,]    1    1    1    1    0    0

+!kronecker(diag(1, 40), matrix(1, 50, 50))用2000 * 2000矩阵

解决了我原来的问题