Я портирую MATLAB код для C ++ с использованием Эйген 3 библиотека шаблонов, и я ищу хорошее отображение для этого общего MATLAB идиома:
K>> [1 2 3 4 5] <= 3
ans =
1 1 1 0 0
Итак, сравните массив и скаляр, возвращая массив логических значений, имеющих одинаковую форму.
Я понимаю, что Эйген массив класс имеет операторы сравнения коэффициентов, но если я правильно интерпретирую документы, они работают только с другим массивом; не со скалярными значениями.
Есть ли какая-то опция, которую я пропустил, которая будет выполнять сравнение со скаляром? Или, если это не удастся, хороший идиоматический способ создать соответствующую форму массив заполнены скалярным значением для RHS выражения?
С благодарностью ChriSopht_ от #eigen
IRC канал:
VectorXd compareMat = ...;
double cutoff = 3;
Matrix<bool, Dynamic, 1> result = compareMat.array() <= cutoff;
Итак, трюк использует .array()
чтобы получить на коэффициент-операторы, и, конечно, затем получить правильный тип возврата …
Других решений пока нет …