我正在尝试将Armadillo用于C ++。我使用该网站作为参考:Armadillo Link
我让它工作的简单而缓慢的方式是:
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类型应该是统一的,但我无法弄清楚如何使用它。
我试过了:
arma::umat InitM;
InitM.set_size(5,5);
这给了我一个随机值的5x5矩阵。
当我尝试其他初始化方法时,没有人会编译。
这看起来非常基本,我找不到任何在线示例,但仍然无法弄明白。
答案 0 :(得分:0)
发布此问题后我发现了它。代码是。
arma::mat UnityMatrix = arma:mat(5,5,fill::eye)
以fill :: eye为关键。当我搜索身份矩阵而非Unity矩阵时,我终于找到了它。
答案 1 :(得分:0)
您似乎想要第一个示例中的identity matrix而不是unit matrix。如果您想要前者而不是Claes Rolen建议的arma::eye<arma::umat>()
。对于后者,请参阅您自己的回复。
至于你的一条评论中的问题,umat
是一个类型为uword
的矩阵,即unsigned int。