2016-07-21 212 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