我需要累积大量的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();
我该如何改善这个?
答案 0 :(得分:3)
我会用
arma::mat dataset(data_points, dim); // populate dataset arma::rowvec mean_vec = mean (dataset);
如果没有特定原因要将vec3
个对象存储在CPP STL vector
中。
如果要在运行时增长矩阵,则可以使用resize
函数。但我建议不要一次增加一行,instad在缓冲区中累积行,然后在块中增长主矩阵。