c++ - 特征矩阵库索引操作

标签 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;

有很多不重叠的(lb1,ub1)和很多“v”。有没有一种简单优雅的方法可以在不编写两个循环的情况下执行此计算(我想到了一种 matlab 操作)

在此先感谢您的帮助。

最佳答案

你可以使用 .select()

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

关于c++ - 特征矩阵库索引操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38506963/

相关文章:

postgresql - 在电话字段的前 3 个字符(区号)上创建索引?

python - 如果存在特定值,则从偶数列中删除行

c++ - Eigen:可修改的自定义表达式

c++ - 将依赖列表(需求)与 conanfile.py 分开

MySQL 索引优化

c++ - 这个自应用阶乘函数的类型是什么?

c++ - 特征矩阵相乘断言失败

c++ - 不同秩的 Eigen 张量 vector

c++ - 禁止复制构造函数和赋值运算符单例类

c++ - 为什么使用声明不公开指向成员的指针