【发布时间】:2017-03-03 06:13:13
【问题描述】:
我需要通过以下方式使用较小的子矩阵创建一个更大的矩阵。这些较小的子矩阵来自我的模型,它们可以是 1x1、2x2、3x3、4x4 或 5x5。新方阵的维度将由所有子矩阵的列数之和确定。例如下面我们有 1x1,2x2 和 1x1 矩阵,因此较大矩阵的维度将是 4x4 (1+2+1=4)。问题是我需要递归执行 50 次。每次我都会有一堆不同维度的子矩阵,我需要使用这些较小的子矩阵制作一个像上面这样的更大矩阵。我将非常感谢任何帮助。
A1<-runif(1)
A <- matrix(runif(4), 2, 2)
A2<- A %*% t(A)
A3<-runif(1)
A4<-matrix(runif(4),2,2)
new.mat<-matrix(c(A1,0,0,0,0,A2[1],A2[2],0,0,A2[3],A2[4],0,0,0,0,A3),nrow=4,ncol=4)
A1
[1] 0.8754123
A2
[,1] [,2]
[1,] 0.9307090 0.3919325
[2,] 0.3919325 0.3857751
A3
[1] 0.323764
new.mat
[,1] [,2] [,3] [,4]
[1,] 0.8754123 0.0000000 0.0000000 0.000000
[2,] 0.0000000 0.9307090 0.3919325 0.000000
[3,] 0.0000000 0.3919325 0.3857751 0.000000
[4,] 0.0000000 0.0000000 0.0000000 0.323764
【问题讨论】:
-
见stackoverflow.com/questions/26773290/… 包
Matrix有一个函数bdiag()来构造块对角矩阵。