有没有办法使用特征来实现(伪代码):
A = BooleanExpr(X) ? ExprTrue : ExprFalse;
其中所有变量都是 Eigen::Array 的。也就是说,对于 X 的每个分量,如果该分量上的 BooleanExpr 为真,则 A 的对应分量计算为 ExprTrue,否则为 ExprFalse。
我现在像这样实现它:
COND = BooleanExpr(X).cast<double>();
A = COND * ExprTrue + (1-COND) * ExprFalse;
但这会计算每个组件上的两个 Expr*,当 Expr 很昂贵时,这感觉不对。
事实上,我想把它推广到 X 的分段定义函数,所以我可以计算类似(伪代码)的东西:
A = PieceExpr[ IntExpr(X) ] ( B );
即 X 的分量上的整数表达式的结果确定用于计算 A 的相应分量的表达式。
可能是我只是走错了路,并且已经有一种方法可以在本征中获得相同的结果,我只是想不通。