使用具有Eigen :: Vector类型的Boost累加器

时间:2011-10-26 21:11:42

标签: c++ boost eigen boost-accumulators

我在将Eigen::VectorXd类型与Boost累加器库相结合时遇到了一些问题:

#include <iostream>
#include <Eigen/Core>
#include <boost/accumulators/accumulators.hpp>
#include <boost/accumulators/statistics/stats.hpp>
#include <boost/accumulators/statistics/mean.hpp>

using namespace boost::accumulators;
using namespace Eigen;

int main()
{
   Vector2f a(1.0, 2.0), b(3.0, 10.0);

   accumulator_set<Vector2f, stats<tag::mean> > acc(Vector2f::Zero());

   acc(a);
   acc(b);

   std::cout << mean(acc) << std::endl;
   std::cout << ((a+b)/2.0) << std::endl;

   return 0;
}

在我的系统上,这会产生:

4.41629e-39
0
2
6

因此,直接计算很好(特征向量支持所有常用的数值运算符)Boost累加器在运行时失败而没有错误。

1 个答案:

答案 0 :(得分:1)

用户定义的类型需要专门化std :: numeric_limits。 见https://svn.boost.org/trac/boost/ticket/5491