犰狳如何获得vec3的平均值

armadillo how to get mean of vec3

我需要积累大量 3d 数据(在 arma::vec3 中)然后我想计算它的平均值。如何以比遍历每个 x、y、z 数据更快的方式完成此操作?

目前,我将数据存储为

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();

我该如何改进?

我会用

arma::mat dataset(data_points, dim);

// populate dataset

arma::rowvec mean_vec = mean (dataset);

如果您在 CPP STL vector 中存储 vec3 个对象没有特定原因 vector

如果你想在运行时增长矩阵,那么你可以使用resize函数。但我建议不要一次增长一行,而是在缓冲区中累积行,然后分块增长主矩阵。