Eigen中的系数自定义函数

时间:2014-02-12 12:43:58

标签: c++ eigen

我有一个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

1 个答案:

答案 0 :(得分:11)

您可以使用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;
}