犰狳如何获得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
函数。但我建议不要一次增长一行,而是在缓冲区中累积行,然后分块增长主矩阵。
我需要积累大量 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
函数。但我建议不要一次增长一行,而是在缓冲区中累积行,然后分块增长主矩阵。