本文介绍了使用Boost Accumulators和Eigen :: Vector类型的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在将 Eigen :: VectorXd
类型与Boost累加器库结合时遇到一些问题:
I am having some problems combining Eigen::VectorXd
types with the Boost accumulator library:
#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;
}
在我的系统上,这会产生:
On my system this produces:
4.41629e-39
0
2
6
所以当直接计算很好时(特征向量支持所有通常的数值运算符)Boost accumulators在运行时失败,没有错误。
So while direct computation is fine (Eigen vectors support all of the usual numerical operators) Boost accumulators fail at runtime without an error.
推荐答案
用户定义的类型需要specialize std :: numeric_limits。
请参阅
User defined type need specialize std::numeric_limits.see https://svn.boost.org/trac/boost/ticket/5491
这篇关于使用Boost Accumulators和Eigen :: Vector类型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!