如何计算 Eigen 中向量的绝对值?由于显而易见的方式
Eigen::VectorXf v(-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0);
v.abs(); // Compute abs value.
不起作用。
如何计算 Eigen 中向量的绝对值?由于显而易见的方式
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
导致编译器错误,如下所示
错误:'Eigen::Matrix' p.abs() 中没有名为 'abs' 的成员;~ ^
所以 Eigen 中的向量只不过是 Matrix 类型。要在 Eigen 中计算矩阵的绝对值,可以使用p.cwiseAbs()
数组转换p.array().abs();
。这两个绝对函数都返回一个值,而不是修改变量本身。
所以正确的做法是
p = p.cwiseAbs();
或者
p = p.array().abs();