Eigen 也可以用于 1-向量(标量)吗?

Can Eigen be used also for 1-vectors (scalars)?

我正在编写一些例程,它对于 2 向量和标量在形式上是相同的。我想写 is 作为 Eigen::Matrix<double,N,1> 的模板,为 N=2 或 N=1 实例化它(对于标量,将标量 double d 包装为 Eigen::Map<Eigen::Matrix<double,1,1>>(&d).

Eigen 的设计是否考虑到了这种特殊情况?它会有效吗,例如在内部为 Eigen::Matrix<double,1,1>::norm() 调用 abs(v1),为 squaredNorm() 调用 v1*v1 或为 normalized()?

调用 copysign(1,v1)

size=1 没有显式特化,但由于显式展开器,大多数表达式将生成标量代码。例如,squaredNorm() 将生成 x*x,但 norm 将生成 sqrt(x*x)normalized().

相同