如何计算Eigen中矢量的绝对值?由于显而易见的方式
Eigen::VectorXf v(-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0);
v.abs(); // Compute abs value.
不起作用。
答案 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();