特征库分配Matrix的元素?

时间:2014-05-24 05:44:45

标签: c++ matrix variable-assignment eigen

我在特征库here

中遇到了以下的矩阵分配
Matrix3f m;
m << 1, 2, 3,
     4, 5, 6,
     7, 8, 9;

作为无聊的替代方式(m(0,0) = 1; ......等)。我的问题是我应该注意使用第一种方法吗?因为我知道任何简化都需要付出代价。

1 个答案:

答案 0 :(得分:6)

在第一种情况下,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

我猜第二次初始化有点慢,但除非你手工初始化大型矩阵,否则它应该没什么区别。在任何情况下,您都不能使用逗号初始化来循环初始化,因此逗号形式仅用于小矩阵(您可以手动编写元素)。