Мне нужно аккумулировать много 3D-данных (в arma :: vec3), а затем я хочу вычислить его среднее значение. Как это можно сделать быстрее, чем перебирать через каждые данные x, y, z?armadillo Как получить среднее значение vec3
Сейчас я храню свои данные в
std::vector<arma::vec3> data3d;
, а затем я перебирать вектор, чтобы получить средний
for (auto &v: data3d) {
mean_x += v(0); mean_y += v(1); mean_y += v(2);
}
mean_x/=data3d.size();mean_y/=data3d.size();mean_z/=data3d.size();
Как я могу улучшить это?
Спасибо. Но может ли это расти динамически? С вектором STL я использую 'reserve()', а затем 'puch_back()' каждую итерацию. Есть ли эквиваленты? – manatttta
Вы можете использовать функцию 'join_rows', но это может быть не очень хорошая идея. Вместо этого вы можете создавать сегменты матрицы данных, например, каждый из которых имеет «n» точек данных, когда один заполняется, затем он переходит ко второму, а затем тот также заполнен, вы можете объединить оба из них в один. Просто просто вычислите среднее значение различных объектов матрицы и возьмите среднее из них. Я лично не буду перебирать, как то, что представляет ваш код. – phoxis
@manatttta: См. Обновленный ответ. – phoxis