c++ - 如何从 Eigen 中的索引 vector 中提取子 vector (Eigen::Vector 的)?

标签 c++ eigen eigen3

假设我有

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}

最佳答案

由于目前的答案对我来说并不令人满意,所以我用谷歌搜索了一下,我找到了this tutorial在 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

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

关于c++ - 如何从 Eigen 中的索引 vector 中提取子 vector (Eigen::Vector 的)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26267194/

相关文章:

c++ - Eigen 中的稀疏矩阵和 vector 加法广播

c++ - 使用条件语句在运行时选择不同的模板化矩阵类

c++ - 如何在 Eigen 中使用自定义预处理器

compiler-errors - Eigen : Eigen matrix size mismatch in if statement的编译错误

c++ - 如何在 DirectX 中标准化模型大小?

函数中的 C++ const 关键字

c++ - 如何通过平移、旋转和缩放反转仿射变换?

gcc - 使用 GCC 编译器优化进行多线程时,Eigen 3.3 共轭梯度速度较慢

c++ - 如何使用 protobuf 对多个可区分的项目进行背靠背编码?

C++ 多态性 : Checking data type of sub class