C++ 特征矩阵库索引运算

C++ 特征矩阵库索引运算,c++,indexing,eigen,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; double lb1(-0.1); 双ub1(

说我有

  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;
double lb1(-0.1);
双ub1(0.1);
双v(5);
对于(int i=0;i您可以使用

r=(r.array()>lb1和&r.array()
您可以使用

r=(r.array()>lb1和&r.array()
perfect这就是我要找的。我只提取lb1和ub1中的子数组时是否有.select()用法?意思是如果r=[1,2,3,4,5,6,7,8,9,10],我想得到子集,比如(r.array()>2,&&r.array()<7)。something()给了我子集[3,4,5,6]如果不是一个block,可能没有其他方法。不,我说的不是block运算。因为r的元素可以是随机的,例如r可以是r=[3,6,7,1,2,0,1,1,4,9,10]。那么block运算将不起作用。我必须使用其他东西。完美这就是我要找的。是否有一个。select()这里我只提取lb1和ub1中的子数组?意思是如果r=[1,2,3,4,5,6,7,8,9,10],我想得到子集,比如(r.array()>2,&&r.array()<7)。something()给了我子集[3,4,5,6]如果不是一个block,可能没有其他方法。不,我说的不是block运算。因为r的元素可以是随机的,例如r可以是r=[3,6,7,1,2,0,1,1,4,9,10]。那么block运算就不起作用了。我必须利用其他东西。
r = (r.array() > lb1 && r.array() < ub1).select(v, r);