7

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

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

ans =

     1     1     1     0     0

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

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

是否有一些我错过的选项可以与标量进行比较?或者如果做不到这一点,创建一个形状适当的数组的一种很好的惯用方法,该数组填充了表达式的 RHS 的标量值?

4

1 回答 1

8

With thanks to ChriSopht_ from the #eigen IRC channel:

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

So, the trick is using .array() to get at coefficient-wise operators, and of course then getting the return type right…</p>

于 2013-04-11T00:32:29.730 回答