在R语言中如何用类似diag()的方法创建非等维对角矩阵?
在R语言中创建非等维对角矩阵的方法
R语言基础包中的diag()函数本身就可以实现你需要的非等维对角矩阵创建,无需额外工具。
你提供的示例代码就是标准用法:
diag(rep(1,9), nrow=3)
执行后会生成3行9列的矩阵,将输入的长度为9的向量按nrow参数指定的行数分割成等长块,依次放在矩阵的块对角位置,其余元素填充为0,输出结果如下:
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [1,] 1 1 1 0 0 0 0 0 0 [2,] 0 0 0 1 1 1 0 0 0 [3,] 0 0 0 0 0 0 1 1 1
如果需要构建包含不同大小块的块对角矩阵,可以使用Matrix包中的bdiag()函数。比如组合一个2x2和一个3x3的单位矩阵:
library(Matrix) bdiag(diag(2), diag(3))
输出为5x5的块对角矩阵:
5 x 5 sparse Matrix of class "dgCMatrix" [1,] 1 . . . . [2,] . 1 . . . [3,] . . 1 . . [4,] . . . 1 . [5,] . . . . 1
内容的提问来源于stack exchange,提问作者monotonic
相关产品推荐
相关产品推荐

