Есть ли способ реализовать с использованием собственного что-то вроде (псевдокод):
A = BooleanExpr(X) ? ExprTrue : ExprFalse;
где все переменные являются Eigen :: Array's. То есть для каждого компонента X, если BooleanExpr для этого компонента имеет значение true, соответствующий компонент A вычисляется как ExprTrue, в противном случае это ExprFalse.
Я реализую это в данный момент как:
COND = BooleanExpr(X).cast<double>();
A = COND * ExprTrue + (1-COND) * ExprFalse;
Но это вычисляет оба Expr * для каждого компонента, что не очень хорошо, когда Expr стоят дорого.
На самом деле я хотел бы обобщить это на кусочно-определенную функцию X, чтобы я мог вычислить что-то вроде (псевдокод):
A = PieceExpr[ IntExpr(X) ] ( B );
, который является результатом целочисленного выражения для компонента X, определяет выражение, используемое для вычисления соответствующего компонента A.
Может быть, я просто ошибаюсь, и есть способ достичь того же результата в eigen, я просто не могу понять это.