特征源中的哪个是为特定矩阵定义的sum()函数?

时间:2017-05-16 13:13:20

标签: c++ eigen

我是Eigen的新手并试图了解布局。我注意到每个矩阵都有一个sum()函数,它返回给定矩阵中所有系数的总和。我对如何实现感兴趣,因为我想找到循环通过特征矩阵的最佳方法。我进入源代码并在“DenseBase.h”中找到以下接口: EIGEN_DEVICE_FUNC Scalar sum() const; 也许我误解了Eigen是如何设计的,但我认为所有函数都是在头文件中定义的。我还查看了“Matrix.h”和“MatrixBase.h”,但无法找到实现。哪个头文件是?

中的定义

1 个答案:

答案 0 :(得分:2)

sum()函数来自Eigen::internal::scalar_sum_op<Scalar>(),在Redux.h中通过redux调用。 scalar_sum_op在Functors.h中定义。之后我失去了兴趣。我发现了这两种方式。第一个是使用Visual Studio并右键单击sum()并选择&#34;转到定义&#34;,跟踪路径直到我满意为止。第二个是使用grep搜索sum()并再次跟踪。

如果您阅读Redux.h,您将了解开发人员是如何做到这一点的。他们花费了大量精力进行矢量化和展开,以使它们快速工作。我想说循环Eigen矩阵的最好方法是使用提供的接口来做你想要的。我怀疑你有一个以某种方式未被界面覆盖的用例。