犰狳如何获得vec3的意思

时间:2015-06-02 11:08:37

标签: c++ armadillo

我需要累积大量的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();

我该如何改善这个?

1 个答案:

答案 0 :(得分:3)

我会用

arma::mat dataset(data_points, dim);

// populate dataset

arma::rowvec mean_vec = mean (dataset);

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

如果要在运行时增长矩阵,则可以使用resize函数。但我建议不要一次增加一行,instad在缓冲区中累积行,然后在块中增长主矩阵。