关于 c:如何在犰狳中创建一个 nxn Unity 矩阵? | 珊瑚贝

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 的随机值矩阵。

当我尝试了其他的初始化方式,但没有一个可以编译时。

这似乎太简单了,以至于我找不到任何在线示例,但仍然无法弄清楚。

  • 我在发布后立即找到了答案。但这带来了另一个问题。我尝试使用的 umat 类型是什么,何时使用?
  • 需要明确的是,没有”统一”矩阵之类的东西。有单位矩阵,有时也称为单位矩阵。不要与酉矩阵混淆,酉矩阵不同于单位矩阵。


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

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

fill::eye 是关键。当我搜索标识矩阵而不是 Unity 矩阵时,我终于找到了它。

  • 一种替代方法是使用 \\’arma::mat UnityMatrix; UnityMatrix.eye(5,5);\\’


您似乎想要一个单位矩阵而不是第一个示例中的单位矩阵。如果您想要前者,请参阅 Claes Rolen 建议的 arma::eye() 。对于后者,请参阅您自己的回复。

至于您评论中的问题,umat 是一个类型为 uword 的矩阵,即 unsigned int.


来源:https://www.codenong.com/46550747/

微信公众号
手机浏览(小程序)

Warning: get_headers(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(): Failed to enable crypto in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(https://static.shanhubei.com/qrcode/qrcode_viewid_9788.jpg): failed to open stream: operation failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57
0
分享到:
没有账号? 忘记密码?