Eigen库如何给矩阵赋值?

8
我在Eigen库的这里看到了以下矩阵分配方式。
Matrix3f m;
m << 1, 2, 3,
     4, 5, 6,
     7, 8, 9;

作为一个替代单调乏味的方式(m(0,0) = 1;...等等)。我的问题是,使用第一种方法应该注意什么问题? 因为我知道任何简化都有代价。

1个回答

8
在第一种情况下,m(0,0)=1 调用了 operator(Index, Index)operator=(const Scalar& s),可能会非常快。而 m << 1,2, ... 调用了重载的 operator<< 和一系列重载的逗号 operator,(const Scalar& s),可以在这里查看代码:http://eigen.tuxfamily.org/dox/CommaInitializer_8h_source.html 我猜第二个初始化会慢一些,但除非你手动初始化大矩阵,否则不会有区别。无论如何,你不能使用逗号初始化来初始化循环中的矩阵,因此逗号形式只用于小矩阵(你真的可以手写元素)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接