本征矩阵库系数明智的操作
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
”。
请问矩阵库的计算问题"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
”。