如何在Eigen中计算向量的绝对值?因为很显然的方式
Eigen::VectorXf v(-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0);
v.abs(); // Compute abs value.
无法工作。
Eigen::VectorXf v(-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0);
v.abs(); // Compute abs value.
无法工作。
在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();
cout << v.abs() << endl
:) - Sergey Kalinichenkov = v.cwiseAbs();
吗? - rrufai