将特征向量的绝对值存储到变量中

Storing the absolute value of an eigen vector in to variable

我似乎对存储 Eigen vector3d 的绝对值的愚蠢问题有疑问。

我想计算 pow(p.cwiseAbs(),2) 但由于 p.cwiseAbs() 不是双精度数,函数调用不起作用。然后我试图将它存储到一个变量中..但不知何故它似乎不可能..

例如

double p_abs = p.cwiseAbs();

错误信息:

 error: cannot convert ‘const Eigen::CwiseUnaryOp<Eigen::internal::scalar_abs_op<double>, const Eigen::Matrix<double, 3, 1> >’ to ‘double’ in initialization
     double p_abs  = p.cwiseAbs();

如何计算向量绝对值的 pow(..,2)?。

我试图写入代码的表达式是:

我正在尝试编码的表达式是这个 post 上的第一个答案所解释的表达式。

https://math.stackexchange.com/questions/1784106/how-do-i-compute-the-closest-points-on-a-sphere-given-a-point-outside-the-sphere/1784159#1784159

How do i compute the pow(..,2) of the absolute value of the vector?

您可能正在寻找平方范数。那就是:

p.squaredNorm();

使用 Eigen 回答原始问题 "how-do-i-compute-the-closest-points-on-a-sphere-given-a-point-outside-the-sphere":

Vector3d center, P, Q;
double radius;
Q = center + radius * (P-center).normalized()