通过对角块分割方阵

Ved*_*dda 3 r matrix

假设我有一个方形矩阵(45 x 45),我想分成5个子矩阵,这些子矩阵9 x 9基于矩阵中的对角线块.我正在寻找一种通用的方法来实现这一点,而无需指定col和行.

mat <- matrix(rnorm(45), 45, 45)

mat1 <- mat[1:9, 1:9]
mat2 <- mat[10:18, 10:18]
mat3 <- mat[19:27, 19:27]
mat4 <- mat[28:36, 28:36]
mat5 <- mat[37:45, 37:45]
Run Code Online (Sandbox Code Playgroud)

G. *_*eck 6

取两个矩阵的kronecker乘积,给出一个块对角矩阵,m其第一个块全为1,第二个块全部为2,等等.然后将其拆分,删除对角线对应的分量,重新形成每个分量.分裂成矩阵.结果s是块列表.

# test inputs
set.seed(123)
n <- 45
k <- 9
mat <- matrix(round(rnorm(n*n), 2), n, n)


m <- diag(1:(n/k)) %x% matrix(1, k, k) 
s <- lapply(split(mat, m)[-1], matrix, k)
Run Code Online (Sandbox Code Playgroud)