特征中的系数自定义函数

Coefficient-wise custom functions in Eigen

本文关键字:自定义函数 特征      更新时间:2023-10-16

我有一个do_magic方法,它接受双精度并加 42。我想将此方法应用于Eigen::MatrixEigen::Array的每个系数(这意味着,我不介意是否只能使用这两种类型中的一种)。

这可能吗?

喜欢这个:

Eigen::MatrixXd m(2, 2);    
m << 1,2,1,2;    
m.applyCoefficientWise(do_magic);
// m is now 43, 44, 43, 44
您可以使用

unaryExpr,尽管这会在矩阵上返回一个新视图,而不是允许您就地修改元素。

将示例从文档中复制出来:

double ramp(double x)
{
  if (x > 0)
    return x;
  else 
    return 0;
}
int main(int, char**)
{
  Matrix4d m1 = Matrix4d::Random();
  cout << m1 << endl << "becomes: " << endl << m1.unaryExpr(ptr_fun(ramp)) << endl;
  return 0;
}