说我有
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 操作)
在此先感谢您的帮助。
最佳答案
你可以使用 .select()
r = (r.array() > lb1 && r.array() < ub1).select(v, r);
关于c++ - 特征矩阵库索引操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38506963/