这应该很简单,但我无法在Eigen文档中找到方法.
说我有一个2D矢量,即
std::vector<std::vector<double> > data
假设它充满了10 x 4数据集.
我如何使用这些数据来填写Eigen::MatrixXd mat.
显而易见的方法是使用这样的for循环:
#Pseudo code
Eigen::MatrixXd mat(10, 4);
for i : 1 -> 10
   mat(i, 0) = data[i][0];
   mat(i, 1) = data[i][1];
   ...
 end
但是应该有更好的方式,这是Eigen原生的?
us2*_*012 10
当然可以.您不能一次执行整个矩阵,因为vector<vector>在连续内存中存储单行,但连续的行可能不是连续的.但是您不需要分配行的所有元素:
std::vector<std::vector<double> > data;
MatrixXd mat(10, 4);
for (int i = 0; i < 10; i++)
  mat.row(i) = VectorXd::Map(&data[i][0],data[i].size());