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); |
这给了我一个 5×5 的随机值矩阵。
当我尝试了其他的初始化方式,但没有一个可以编译时。
这似乎太简单了,以至于我找不到任何在线示例,但仍然无法弄清楚。
我在发布此问题后立即找到了它。代码是。
1
|
arma::mat UnityMatrix = arma:mat(5,5,fill::eye)
|
fill::eye 是关键。当我搜索标识矩阵而不是 Unity 矩阵时,我终于找到了它。
您似乎想要一个单位矩阵而不是第一个示例中的单位矩阵。如果您想要前者,请参阅 Claes Rolen 建议的
至于您评论中的问题,
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/268905.html