特征中的分量式条件/分段定义运算
component-wise conditional / piecewise-defined operations in eigen
有没有一种方法可以使用特征来实现(伪代码):
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的相应分量的表达式。
也许我只是走错了路,而且已经有一种方法可以在本征中获得同样的结果,我就是想不通。
您似乎需要.select(),如http://eigen.tuxfamily.org/dox-devel/classEigen_1_1DenseBase.html#a7c7f8804e216885f49b70f61c7ae3bbb(我认为这适用于数组和矩阵,与文档中的建议相反)。
对于更普遍的情况,除了嵌套选择之外,我不知道还有什么好方法可以实现这一点。
相关文章:
- 如何在C++中返回自定义类中的分段错误?
- 重新定义的运算符'='导致的分段错误
- 定义宏时与 std::cin C++中的分段错误
- 自定义堆中的分段错误
- 为什么当我使用自定义分配器溢出向量时没有出现分段错误?
- 自定义映射类中的分段错误
- std::list::使用自定义比较器排序时出现分段故障
- 尝试将顶点添加到自定义Graph数据结构时出现分段错误
- 类定义中的分段错误无法确定在哪里
- 未定义的引用和分段错误
- std::make_pair自定义类的分段错误
- 创建自定义tcl通道驱动程序时出现分段错误
- 特征中的分量式条件/分段定义运算
- 第二次推送时,优先级队列出现自定义比较器分段故障
- 自定义类构造中的分段错误
- 使用自定义排序功能对向量<string>中的字符串进行排序时出现分段错误
- 定义分段函数(如多项式)
- 列表,迭代器定义只在Eclipse调试器中进行分段
- 在 std::sort() 中的自定义函数中,>(大于)运算符与 <(小于运算符)的交换会导致分段错误吗?
- 关于C++中的分段错误的问题很可能是由自定义复制构造函数引起的