当我尝试在Eigen中使用<html>
<body>
<div class="red"></div>
<div class="blue"></div>
<div class="red"></div>
<div class="blue"></div>
<div class="red"></div>
<div class="blue"></div>
<div class="red"></div>
<div class="blue"></div>
<div class="red"></div>
</body>
</html>
调用lpNorm<1>
时出现错误:
错误:&#39; Eigen :: DenseBase&gt; &GT; :: ColwiseReturnType&#39;没有名为&#39; lpNorm&#39;
的成员
相反,norm()和squaredNorm()可以很好地将它们称为colwise。
例如
colwise()
工作得很好
#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;
}
如果我取消注释最后一行,我会收到错误消息。
有人可以帮忙吗?
答案 0 :(得分:3)
在Eigen&lt; = 3.2.9中没有为colwise
实现。您有两种选择:
答案 1 :(得分:1)
您可以这样绕过它:
m.cwiseAbs().colwise().sum()
不幸的是,它仅在L1规范(等效于绝对值)的情况下起作用。