当我尝试调用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
尚未实现。您有两个选择:
- 升级至Eigen 3.3 (测试版)
- 循环所有列并一一计算 lp 范数。
关于c++ - 在 Eigen 中按列计算 lpNorm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38812776/