我可以请求矩阵库的计算问题" 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"被采用并且应用了仿函数操作。
我总是可以在循环中完成它,但这是唯一的出路吗?
提前致谢。
答案 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
”。