(疑似コード)のような固有値を使用して実装する方法はありますか:
A = BooleanExpr(X) ? ExprTrue : ExprFalse;
ここで、すべての変数は Eigen::Array のものです。つまり、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 の対応する成分を計算するために使用される式を決定します。
私はそれについて間違った方向に進んでいるだけで、すでに固有値で同じ結果を達成する方法があるかもしれませんが、私はそれを理解できません。