Как мне выразить & lt; array-of-true-or-false & gt; = & lt; массив & gt; & lt; = & lt; скаляр & gt; & quot; используя Eigen 3?

Я портирую MATLAB код для C ++ с использованием Эйген 3 библиотека шаблонов, и я ищу хорошее отображение для этого общего MATLAB идиома:

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

ans =

1     1     1     0     0

Итак, сравните массив и скаляр, возвращая массив логических значений, имеющих одинаковую форму.

Я понимаю, что Эйген массив класс имеет операторы сравнения коэффициентов, но если я правильно интерпретирую документы, они работают только с другим массивом; не со скалярными значениями.

Есть ли какая-то опция, которую я пропустил, которая будет выполнять сравнение со скаляром? Или, если это не удастся, хороший идиоматический способ создать соответствующую форму массив заполнены скалярным значением для RHS выражения?

6

Решение

С благодарностью ChriSopht_ от #eigen IRC канал:

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

Итак, трюк использует .array() чтобы получить на коэффициент-операторы, и, конечно, затем получить правильный тип возврата …

7

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]