I am porting some MATLAB code to C++ using the Eigen 3 template library, and I am looking for a good mapping for this common MATLAB idiom:
K>> [1 2 3 4 5] <= 3
ans =
1 1 1 0 0
So, compare an array and a scalar, returning an array of booleans that has the same shape.
I understand that Eigen's Array class has coefficient-wise comparison operators, but if I'm interpreting the docs correctly they only work with another array; not with scalar values.
Is there some option I've missed that will perform the comparison with a scalar? Or failing that, a nice idiomatic way to create an appropriately-shaped Array filled with the scalar value for the RHS of the expression?
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…
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With