2016-07-21 9 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" があります。 2つのループを書くことなくこの計算を実行する簡単でエレガントな方法はありますか?(私はmatlabのような操作を念頭に置いています)

ありがとうございました。

答えて

2

あなたは、これは私が探していたものである.select()

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

完璧を使用することができます。 – user1612986

+0

には、lse1とub1の中でサブアレイを抽出する場所が.select()です。 – user1612986

+0

あなたはどういう意味ですか? – kangshiyin

関連する問題