【发布时间】:2013-03-05 12:11:34
【问题描述】:
我有一个数据向量,我想找到数据集的峰度。我想用 Boost 来做到这一点,这是我目前所拥有的(不可编译):
#include <boost/math/distributions.hpp>
using namespace std;
int main()
{
vector<double> a;
a.push_back(-1);
a.push_back(0);
a.push_back(1);
cout << "Kurtosis:"<< kurtosis(a) << endl;
return 0;
}
为什么这不起作用?我的编译器给了我错误:“[...]\main.cpp|28|error: 'kurtosis' was not declared in this scope|”
【问题讨论】:
-
如果编译不出来,贴出编译错误
-
函数在另一个命名空间,需要使用
boost::some::namespace::kurtosis(a)。将some::namespace替换为实际(我不知道)命名空间。 -
免责声明:我对问题域的了解不够,无法完全确定我在说什么。我的猜测是
中的算法仅适用于parameterized predefined distributions。使用数据集的替代方法可能是Boost.Accumulators。 Here 就是一个例子。 -
@llonesmitz 我喜欢你的第一个例子,我可以用它。你知道如何在 Boost 中重置累加器吗?因为我需要找到各种数据集的峰度(循环......)
-
@llonesmiz 我发现了这个,描述了如何重置累加器:stackoverflow.com/questions/5195990/…