如何计算 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 中向量的绝对值?的主要内容,如果未能解决你的问题,请参考以下文章