есть способ реализовать, используя собственные векторы что-то вроде (псевдокод):покомпонентной условные/кусочно-определенные операции по собственным
A = BooleanExpr(X) ? ExprTrue : ExprFalse;
, где все переменные являются Эйген :: массива. Это для каждого компонента X, если BooleanExpr на этом компоненте истинно, соответствующий компонент A вычисляется как ExprTrue, иначе это ExprFalse.
я реализую его в тот момент, как:
COND = BooleanExpr(X).cast<double>();
A = COND * ExprTrue + (1-COND) * ExprFalse;
Но это вычисляет как Expr * на каждый компонент, который не чувствует себя хорошо, когда выраж являются дорогостоящими.
На самом деле я хотел бы обобщить это кусочно-определенные функции X, так что можно вычислить что-то вроде (псевдокод):
A = PieceExpr[ IntExpr(X) ] (B);
, что является результатом целочисленного выражения на компоненте X определяет выражение, используемое для вычисления соответствующего компонента A.
Может быть, я просто ошибаюсь, и есть способ достичь такого же результата уже в собственном я, я просто не могу понять это.
правый! спасибо ... – artm
также, насколько я понимаю, вопреки тем, какие аргументы указывают, что thenMatrix и elseMatrix могут быть выражениями, и только один или другой будет вычисляться на один компонент (поскольку типы аргументов DenseBase, а не MatrixBase). – artm