How to create a nxn Unity matrix in Armadillo?
我正在尝试将 Armadillo 用于 C 。我正在使用该站点作为参考:Armadillo Link
我让它工作的简单而缓慢的方法是:
1 2 3 4 5 6 7 | arma::mat UnityMatrix = arma:mat(5,5,fill::zeros) for (int ii = 0; ii < UnityMatrix.n_rows;ii++){ for (int jj = 0; jj < UnityMatrix.n_cols;jj++){ if (ii==jj){ UnityMatrix(ii,jj)=1; } } |
}
我创建一个零矩阵,并在对角线上添加一个。这行得通,但我确信在犰狳中有更有效的方法。
犰狳有umat类型,应该是统一的,但我不知道如何使用它。
我试过了:
1 2 | arma::umat InitM; InitM.set_size(5,5); |
这给了我一个 5x5 的随机值矩阵。
当我尝试了其他的初始化方式,但没有一个可以编译时。
这似乎太简单了,以至于我找不到任何在线示例,但仍然无法弄清楚。
我在发布此问题后立即找到了它。代码是。
1 | arma::mat UnityMatrix = arma:mat(5,5,fill::eye) |
fill::eye 是关键。当我搜索标识矩阵而不是 Unity 矩阵时,我终于找到了它。
您似乎想要一个单位矩阵而不是第一个示例中的单位矩阵。如果您想要前者,请参阅 Claes Rolen 建议的
至于您评论中的问题,