【发布时间】:2018-03-12 17:17:53
【问题描述】:
我有一个在 MATLAB 中计算的大尺寸一维数组。我需要找到这个数组的中位数。我想为此目的使用 boost c++ 库,因为它具有使用 P-square 算法计算中位数的实现,该算法对于大型数组有效。下面是一个一个推入 5 个数字并使用 boost 库找到中位数的代码。我想更改此代码,以便可以将数组作为参数传递并找到该数组的中位数。数组的大小很大,所以我不能使用“for循环”来推送累加器集中的每个元素。
#include <boost/accumulators/accumulators.hpp>
#include <boost/accumulators/statistics.hpp>
#include <iostream>
using namespace boost::accumulators;
int main() {
accumulator_set<double, features<tag::mean, tag::median> > acc;
acc(8);
acc(9);
acc(10);
acc(11);
acc(12);
//double arr[3] = {1,2,3};
//acc(arr);
std::cout << mean(acc) << '\n';
std::cout << median(acc) << '\n';
}
我确实找到了一些要求使用向量的资源,但我不明白。一个工作示例,其中一个小数组作为参数传递,然后使用 boost c++ 库找到中位数将受到高度赞赏。
【问题讨论】: