13

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

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

不起作用。

4

1 回答 1

21

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

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

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

所以正确的做法是

p = p.cwiseAbs();

或者

p = p.array().abs();
于 2014-08-16T14:40:03.210 回答