2016-07-21 155 views
0

说我有特征矩阵库索引操作

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类操作记住)

在此先感谢您的任何帮助。

回答

2

你可以使用.select()

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

完美这就是我一直在寻找。 – user1612986

+0

是否有.select()使用我在哪里提取lb1和ub1内的子数组? – user1612986

+0

你是什么意思? – kangshiyin