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

时间:2016-02-17 17:14:35

标签: c++ eigen

我可以请求矩阵库的计算问题" 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"被采用并且应用了仿函数操作。

我总是可以在循环中完成它,但这是唯一的出路吗?

提前致谢。

1 个答案:

答案 0 :(得分:3)

您可以在矩阵中应用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”。