本征矩阵库系数明智的操作

Eigen Matrix library coefficient wise manipulation

请问矩阵库的计算问题"Eigen."

假设我有一个仿函数:

    struct my_F
    {
      double a_,b_;
      my_F(double a,double b):a_(a),b_(b){};
      double operator()(double x){return (x+a)*(x+b);}
    }

现在我想用这个仿函数来操作一个Eigen::MatrixXd

Eigen::MatrixXd a(10,12);
a.setConstant(2.); 

我如何编写一些东西(以一种紧凑而漂亮的方式)以便获取 "a" 的每个元素并对其应用仿函数操作。

我总是可以循环执行,但这是唯一的出路吗?

提前致谢。

您可以将 unaryExpr 应用于您的矩阵:

Eigen::MatrixXd M(10,12);
//fill matrix M

auto f = my_F{1.0,2.0};
auto M_new = M.unaryExpr(f);

请注意,转换的结果 M_new 未存储,而是动态计算(与表达式模板库中一样)。如果要存储结果,请将“auto M_new”替换为“Eigen::MatrixXd M_new”。