c++ - 如何使用 Eigen 3 表达 "<array-of-true-or-false> = <array> <= <scalar>"?

标签 c++ matlab eigen vmat

我正在使用 Eigen 3 模板库将一些 MATLAB 代码移植到 C++,我正在为这个常见问题寻找一个好的映射MATLAB 习惯用法:

K>> [1 2 3 4 5] <= 3

ans =

     1     1     1     0     0

因此,比较数组和标量,返回具有相同形状的 bool 数组。

我知道 Eigen 的 Array 类有系数比较运算符,但如果我正确地解释了文档,它们只适用于另一个数组;不是标量值。

是否有一些我错过的选项可以执行与标量的比较?还是失败了,一个很好的惯用方法来创建一个形状适当的 Array 填充表达式 RHS 的标量值?

最佳答案

感谢 #eigen IRC channel 的 ChriSopht_:

VectorXd compareMat = ...;
double cutoff = 3;
Matrix<bool, Dynamic, 1> result = compareMat.array() <= cutoff;

所以,诀窍是使用 .array() 来获取系数运算符,当然还有正确的返回类型……

关于c++ - 如何使用 Eigen 3 表达 "<array-of-true-or-false> = <array> <= <scalar>"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15938229/

相关文章:

matlab - 在第一个否定之后将元素转换为 NaN

c++ - 范围变量循环导致返回局部变量的地址引用?

matlab - 交叉验证matlab - crossval函数

c++ - 使用 boost::posix_time 计算时间差

matlab - 如何在 Octave 或 Matlab 中绘制具有两个变量的函数?

c++ - 特征矩阵的就地元素类型转换

c++ - Eigen :std::set 与 VectorXd

eigen - 如何在控制台中打印带有特征的格式化稀疏矩阵?

c++ - 带有通配符的 ifstream

c++ - 使用 `::value` 时如何避免写入 `::type` 和 `std::enable_if` ? [cppx]