如何计算Eigen中矢量的绝对值?

时间:2014-08-16 14:09:23

标签: c++ eigen absolute-value

如何计算Eigen中矢量的绝对值?由于显而易见的方式

Eigen::VectorXf v(-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0);
v.abs(); // Compute abs value.

不起作用。

1 个答案:

答案 0 :(得分:14)

对于Eigen 3.2.1,使用p.abs();的方式与使用p.normalize的方式相同,会导致编译错误

  

错误:'Eigen :: Matrix'中没有名为'abs'的成员p.abs();       〜^

所以Eigen中的向量只不过是Matrix类型。要计算Eigen中矩阵的绝对值,可以使用p.cwiseAbs()或数组转换p.array().abs();。这两个绝对函数都返回一个值而不是修改变量本身。

所以正确的方法是做

p = p.cwiseAbs();

p = p.array().abs();