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

Posted

技术标签:

【中文标题】如何计算 Eigen 中向量的绝对值?【英文标题】:How do I compute the absolute value of a vector in Eigen? 【发布时间】:2014-08-16 14:09:23 【问题描述】:

由于显而易见的方式

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

不工作。

【问题讨论】:

试试cout << v.abs() << endl :) 你试过v = v.cwiseAbs();. 【参考方案1】:

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

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

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

所以正确的做法是这样做

p = p.cwiseAbs();

p = p.array().abs();

【讨论】:

以上是关于如何计算 Eigen 中向量的绝对值?的主要内容,如果未能解决你的问题,请参考以下文章