特征矩阵库系数明智操作

Eigen Matrix library coefficient wise manipulation

本文关键字:操作 特征      更新时间:2023-10-16

我可以就矩阵库"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"。