【发布时间】:2017-07-16 05:16:13
【问题描述】:
我想创建一个块状对角矩阵,如下所示:
M
A1 0 0 0 0
0 A2 0 0 0
0 0 A3 0 0
0 0 0 A4 0
0 0 0 0 A5
每个 0 是一个零矩阵,每个 A1、A2、A3、A4、A5 矩阵是一个方阵,每个矩阵具有相同的维度,但具有不同的条目。
如果我知道每个矩阵 A1、A2、A3、A4、A5,是否有办法生成如此大的块对角矩阵而不使用循环?
我希望找到一个适用于任意数量矩阵的解决方案,希望不仅仅是 5 个。谢谢!
【问题讨论】:
-
将矩阵放入
list并执行bdiag即library(Matrix); bdiag(mget(paste0('A', 1:5))) -
对于所有 As 相同的特殊情况,
kronecker(diag(5), matrix(1:9,3,3))