I was trying to use vectors with accumulators and someone suggested to use ublas vectors that have mathematical operators already defined. But when I tried I got what seems to be a size mismatch error. This is the code I was trying to use:
#include <boost/accumulators/accumulators.hpp>
#include <boost/accumulators/statistics.hpp>
#include <boost/accumulators/statistics/stats.hpp>
using namespace boost::accumulators;
using namespace boost::numeric;
int main() {
ublas::vector<double> x(3), y(3), z(3);
x[0] = 1; x[1] = 1; x[2] = 1;
x[0] = 1; x[1] = 1; x[2] = 2;
x[0] = 2; x[1] = 1; x[2] = 1;
accumulator_set < ublas::vector<double> , stats<tag::mean> > acc;
acc(x);
acc(y);
acc(z);
std::cout << mean(acc) << std::endl;
return 0;
}
The error message is:
Check failed in file /usr/include/boost/numeric/ublas/detail/vector_assign.hpp at line 262:
size1 == size2
terminate called after throwing an instance of 'boost::numeric::ublas::bad_argument'
what(): bad argument
Aborted
Did any of you succeded/know how to use vectors as variables to accumulate with boost accumulators?