如何在特征中扩展cwise二进制运算(或函数)

时间:2016-10-18 13:39:10

标签: eigen

在本征中有组件方式的二元运算符,如+, - 等。这也是两个类函数cwiseMin和cwiseMax,但我想用至少AbsDiff | xi - yi |来扩展它。 ans SqrDiff(xi - yi)^ 2。但是怎么做呢?

我唯一能想到的就是检索两个数据指针并对它们进行操作(也许,使用cilk),但看起来像是对我的黑客攻击。我期待定义标量函数的可能性,如AbsDiff(x,y)= | x-y | ans SqrDiff(x,y)=(x-y)^ 2并将它们传递给一般的特征遍历例程,但显然没有。我错过了什么,也许更简单?

1 个答案:

答案 0 :(得分:3)

你可以写

result = x.binaryExpr(y, func);

其中func是二元仿函数。但正如我在上面所写的那样,对于你的用例,简单地编写

应该更好
absdiff = (x-y).cwiseAbs();
sqrdiff = (x-y).cwiseAbs2();

这些表达式将被懒惰地评估,并将受益于矢量化(如果可用)。