c++ - 在 Eigen 中按列计算 lpNorm

标签 c++ eigen

当我尝试调用lpNorm<1>时与 colwise()在 Eigen 中我收到错误:

error: 'Eigen::DenseBase > >::ColwiseReturnType' has no member named 'lpNorm'

相反,norm() 和 squaredNorm() 可以很好地调用它们。

示例

  #include <Eigen/Dense>
  #include <iostream>
  using namespace std;
  using namespace Eigen;
  int main()
  {
    MatrixXf m(2,2), n(2,2);
    m << 1,-2,
      -3,4;
    cout << "m.colwise().squaredNorm() = " << m.colwise().squaredNorm() << endl;
    cout << "m.lpNorm<1>() = " << m.lpNorm<1>() << endl;
 //  cout << "m.colwise().lpNorm<1>() = " << m.colwise().lpNorm<1>() << endl;
}

捐赠效果很好

m.colwise().squaredNorm() = 10 20
m.lpNorm<1>() = 10

如果我取消注释最后一行,则会出现错误。

有人可以帮忙吗?

最佳答案

Eigen <=3.2.9 中的 colwise 尚未实现。您有两个选择:

  1. 升级至Eigen 3.3 (测试版)
  2. 循环所有列并一一计算 lp 范数。

关于c++ - 在 Eigen 中按列计算 lpNorm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38812776/

相关文章:

c++ - 有没有办法检查 Qt 中的重复连接?

c++ - 为基本数据类型和 Eigen 数据类型编写模板函数

c++ - 如何在 Eigen 中定义 VectorXd 数组

c++ - Eigen::Ref<> 作为成员变量

c++ - 为什么我不能在 Eigen3 中消除这个临时变量?

c++ - C++代码中的尾递归优化

c++ - 查找浮点a最接近浮点b的倍数

c++ - 对于支持巨大地形的 3d 游戏引擎有什么建议?

c++ - 阅读字符串和 double

eigen - 我如何从方法中返回Eigen::Matrix,这样在返回时不会复制数据