You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 22:28:13