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

16
如何在Eigen中计算向量的绝对值?因为很显然的方式
Eigen::VectorXf v(-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0);
v.abs(); // Compute abs value.

无法工作。


1
尝试使用 cout << v.abs() << endl :) - Sergey Kalinichenko
3
你尝试过使用 v = v.cwiseAbs(); 吗? - rrufai
1个回答

26

在Eigen 3.2.1中,使用p.abs();与使用p.normalize()相同的方式会导致编译器错误,类似于:

error: no member named 'abs' in 'Eigen::Matrix' p.abs(); ~ ^

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

所以正确的做法是:

p = p.cwiseAbs();
或者
p = p.array().abs();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接