特征矩阵库索引操作

时间:2016-07-21 14:27:46

标签: c++ indexing eigen

说我有

  Eigen::VectorXd r = Eigen::VectorXd::Random(10); 

现在我想要以下内容:

  double lb1(-0.1);
  double ub1(0.1);
  double v(5.); 
  for(int i =0;i<10;i++)
      if( (lb1 < r[i]) && (r[i]<ub1))
            r[i] = v;

有许多非重叠(lb1,ub1)和许多“v”。是否有一种简单优雅的方式来执行此计算而无需编写两个循环(我有一个matlab类型的操作)

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

您可以使用.select()

r = (r.array() > lb1 && r.array() < ub1).select(v, r);