我正在使用 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/