问题标签 [boost-accumulators]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 升压累加器滚动计数非零
我正在尝试使用累加器来找出每秒给定活动的统计信息。以下是我要计算的两个统计数据
活动被触发的次数
活动触发的总权重之和。
为了实现这一目标,我假设了 10 毫秒的粒度并考虑了 100 个桶(每秒)。
每当有事件发生时,Activity 线程就会插入累加器
空活动线程每 10 毫秒唤醒一次,以在权重中插入 0。
下面的伪代码
使用上述技术,我能够实现在最后一秒输入的重量,但是如何使用增压蓄能器在最后一秒内触发活动的次数?
c++11 - 两个 boost::accumulators::accumulator_set 相互干扰
我Histogram
在我的代码中创建了一个类,该类旨在作为boost::accumulators::accumulator_set
Boost 1.54 的包装器。对我的问题来说似乎很重要的是Histogram.hpp
文件中的那些行:
然后在Histogram.cpp
我有构造函数:
使用此直方图 ( do_iterations()
in main-metropolis.cpp
) 的代码以以下内容开头:
当我在第二行停用的情况下运行它时,它就像我期望的那样工作。我的模拟生成了一些数据点,将其放入,Histogram::acc
然后让我提取它:
然后我激活了这条线,并且position_histogram
以一种非常奇怪的方式工作。bins 全部为零,但数据被分配到第一个和最后一个 bin 的溢出 bin 中:
如果我交换线路,那就是action_histogram
中断。所以第二个总是打破第一个。为什么初始化第二个Histogram
,因此第二个accumulator_set
会导致第一个中断?
d3081a1ef7
请在浏览代码时使用修订版,因为我现在构建了自己的直方图实现以继续工作。
c++ - boost::accumulator: sample_type 的哪些运算符?
我想使用 boost::accumulator 来定义我的自定义类的移动平均值:
我的问题是我的示例是用户定义的类(另一个库的向量实现)。
我在这篇文章中看到可以为 std::vectors 定义累加器,但它没有指定必须重载哪个运算符,因为它用boost/accumulators/numeric/functional/vector.hpp
.
如果我想将累加器与用户定义的示例类一起使用,我必须重载哪个运算符以及如何重载?
c++ - boost::accumulator: std::vector 不适用于 rolling_mean
我正在关注一些线程(this,this和this),以便使用 std::vector 作为样本计算滚动平均值。
我已经包含了子库的标题numeric::functional
以便使用向量
此代码无法编译
如果我评论这一行,它会编译
因此,检索价值似乎存在问题。我怎样才能解决这个问题?
我正在使用提升 1.48。
编辑:
@doctorlove 在编译错误中operator-=
注意到std::Vector
. 我打开了boost/accumulators/numeric/functional/vector.hpp
,我看到这个操作符的定义错过了。所以我在我的代码中添加了它以这种方式更改它(对不起,如果它写得不好):
我已经采用了operator+=
该标题中的定义并对其进行了调整。
我这样做是因为在这篇文章中,用户说向量运算符必须在累加器定义之前定义。
但即使在这种情况下,我也无法编译它。
c++ - 使用空的 boost::accumulators
如何检查空的 boost::accumulators acc 与否?
例如:
因为如果它是空的,我会为 boost::accumulators::mean(acc) 得到 NaN。
boost - mac OSX Yosemite 上的 Boost::accumulators 初始化失败
我目前正在尝试使用 Boost::accumulators,但在构造函数中初始化时出现编译错误。请查看下面的课程详细信息。
代码:
错误:
c++ - boost::accumulators::rolling_mean 返回不正确的平均值
环境:VS 2013,Boost 1.58
我写了一些东西,它为 Boost 的累加器提供了一个更友好的界面,它可以用来在窗口上投影总和,并计算窗口上的实际滚动平均值。在推动将 VS 2013 作为我们的主要编译器的过程中,该类的一个单元测试开始失败。剥离层,我将其缩小到这个最小的例子:
在循环的最后一遍,我没有得到预期的平均值(1.5),而是得到了一个疯狂的高值(1431655766.333333)。
此代码在带有 Boost 1.49 的 VS 2008 中正确执行(显然替换了 C++11 向量初始化),但在带有 Boost 1.58 的 VS 2012 和 VS 2013 中失败。我无法解释这个失败,因此无法修复它。
其他有趣的点:
- 手动检查累加器内的内存值会发现正确的数据包含在其循环缓冲区中。
- 如果放入累加器的数据按递增值排序,则 rolling_mean 将是正确的。
- 一旦窗口已满,如果任何新元素小于它从窗口中敲出的数量,rolling_mean 将不正确。如果它等于或大于,则 rolling_mean 将是正确的。
这似乎是一个 Boost 错误,但想在报告错误或尝试构建 Boost 1.59 之前验证我没有做愚蠢的事情。提前致谢!
编辑:感谢您的回复,因为这似乎是一个 Boost 错误。相关的 Boost 票在这里。. 这是与带有累加器的无符号整数有关的问题。具体来说,如果在窗口已满后添加到累加器的值严格小于窗口中的所有值,则 rolling_mean 调用将返回无效结果。
有一种解决方法,即不要将无符号整数与累加器一起使用。这解决了我的问题,非常感谢您的帮助!
c++ - 在运行时初始化 boost::accumulator_set
有没有办法在运行时声明 aboost::accumulator_set
具有确定为运行时的功能?就像是:
c++ - boost 累加器示例无法编译
我在 Linux Mint 17.3 Rosa 上安装了boost (1.60.0) 并尝试用使用此命令的 gcc 编译器(v 4.8.4 64 位):
编译失败,出现一长串错误消息,开头为:
查找 accumulators.hpp 后,我将 accumulators::moment<2> 更改为 moment<2>。这成功了,编译(使用相同的标志)成功了。或者,在“累加器”前面加上“boost::accumulators::moment<2>”也可以。所以我的问题是:我的 boost 安装有问题还是教程中的示例中有错字?
c++ - Boost::accumulator 给出错误值的百分位数
我boost::accumulators::tag::extended_p_square_quantile
用于计算百分位数。在这种情况下,我还需要将概率提供给累加器,所以我这样做了m_acc = AccumulatorType(boost::accumulators::extended_p_square_probabilities = probs);
,其中 probs 是一个包含概率的向量。
概率向量中的值是{0.5,0.3,0.9,0.7}
我为累加器提供了一些示例值。
但是,当我尝试使用boost::accumulators::quantile(m_acc, boost::accumulators::quantile_probability = probs[0]);
它来获取百分位数时,它会返回不正确的值,有时甚至会返回 nan。
这里有什么问题?