特征:在矩阵中获取分散元素

时间:2016-03-05 22:31:58

标签: c++ matlab eigen masking eigen3

在MATLAB中,我能够选择一个分散的子矩阵,例如:

A = [1 ,2 ,3;4,5,6;7,8,9]
A([1,3],[1,3]) = [1,3;7,9]

有没有一种聪明的方法可以用Eigen做到这一点?

1 个答案:

答案 0 :(得分:3)

不是通用的方式,但如果您的访问模式是常规的,您可以使用具有适当步幅的Eigen :: Map:

#include <Eigen/Core>
#include <iostream>

int main(int argc, char *argv[])
{
  Eigen::Matrix3d A;

  A << 1, 2, 3, 4, 5, 6, 7, 8, 9;

  std::cout << Eigen::Map<Eigen::Matrix2d, 0, Eigen::Stride<6, 2> >(A.data());
  return 0;
}

请参阅 http://eigen.tuxfamily.org/dox/classEigen_1_1Stride.html

相关问题