如何使用来自另一个`Eigen :: VectorXd'向量的值初始化`Eigen :: VectorXd`,基于索引

时间:2017-01-26 01:50:14

标签: c++ vector initialization eigen

我有兴趣使用来自另一个Eigen::VectorXd向量的值初始化Eigen::VectorXd向量,基于vector<int>索引,这些索引将指出将使用哪些确切元素。

即,

// This is the large vector from which I'll take the values to 
// initialize the second, shorter one
int N = 100;
Eigen::VectorXd V(N);
V.setRandom(N);

// This is the vector of indexes that'll be used to specify 
// which elements of V will be used in the initialization of x
vector<int> ids = {1, 3, 0, 20};

// This is the vector I want to initialize
Eigen::VectorXd x(ids.size());

现在,我想要的x如下:

x(0)= V(1)

x(1)= V(3)

x(2)= V(0)

x(4)= V(20)

非常感谢!

1 个答案:

答案 0 :(得分:3)

在devel分支(将变为3.4)中,您可以执行以下操作:

x = V(ids);

使用Eigen 3.3,你必须编写自己的for循环。