如何从 Eigen 中的索引向量中提取子向量(Eigen::Vector)?

新手上路,请多包涵

假设我有

Eigen::VectorXd x; //{1,2,3,4,5,6,7,8}

Eigen::VectorXd ind_vec; //{0,2,4,5}

有没有一种简单的方法来提取 x 的 ind_vec 元素?

就像是:

 x.extract(ind_vec) returning {1, 3, 5, 6}

原文由 user1526533 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 897
1 个回答

由于当前的答案对我来说并不令人满意,我搜索了一下,我在 Eigen 文档中找到 了这个教程

 #include <Eigen/Dense>
#include <iostream>
using namespace std;
int main()
{
  Eigen::ArrayXf v(6);
  v << 1, 2, 3, 4, 5, 6;
  cout << "v.head(3) =" << endl << v.head(3) << endl << endl;
  cout << "v.tail<3>() = " << endl << v.tail<3>() << endl << endl;
  v.segment(1,4) *= 2;
  cout << "after 'v.segment(1,4) *= 2', v =" << endl << v << endl;
}

将输出:

 v.head(3) =
1
2
3

v.tail<3>() =
4
5
6

after 'v.segment(1,4) *= 2', v =
 1
 4
 6
 8
10
 6

我没有用向量测试过它,但我想应该也是可能的。

原文由 Javi 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题