如何在Armadillo中创建NXN统一矩阵

How to create a nxn Unity matrix in Armadillo?

本文关键字:NXN 创建 Armadillo      更新时间:2023-10-16

我正在尝试将armadillo用于C 。我正在使用该网站供参考:armadillo链接

简单而缓慢的工作方式是:

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;
   }
 }

}我创建一个零矩阵,然后在对角线上添加。这有效,但我敢肯定,在Armadillo中有更有效的方法。

Armadillo具有应该是统一的UMAT类型,但我不知道如何使用它。

我尝试了:

arma::umat InitM;
InitM.set_size(5,5);

给我一个随机值的5x5矩阵。

当我尝试其他初始化方法时,但没有任何汇编。

这似乎是如此基础,以至于我找不到任何在线示例,但仍然无法弄清楚。

我在发布此问题后立即找到了它。代码为

arma::mat UnityMatrix = arma:mat(5,5,fill::eye)

填充::眼睛是钥匙。当我搜索身份矩阵而不是统一矩阵时,我终于找到了它。

似乎您想要一个身份矩阵,而不是第一个示例的单位矩阵。如果您想要前者,那就是CLAES ROLEN建议的arma::eye<arma::umat>()。对于后者,请参阅您自己的答复。

至于您的一个评论中的问题, umat是带有uword类型的矩阵,即未签名的int。