我有一个do_magic
方法,它需要一个加倍并加42。我想将此方法应用于Eigen::Matrix
或Eigen::Array
的每个系数(这意味着,我不介意只有这两种类型中的一种才有可能)。
这可能吗?
像这样:
Eigen::MatrixXd m(2, 2);
m << 1,2,1,2;
m.applyCoefficientWise(do_magic);
// m is now 43, 44, 43, 44
答案 0 :(得分:11)
您可以使用unaryExpr
,但这会在矩阵中返回一个新视图,而不是允许您修改元素。
从文档中复制示例:
double ramp(double x)
{
if (x > 0)
return x;
else
return 0;
}
int main(int, char**)
{
Matrix4d m1 = Matrix4d::Random();
cout << m1 << endl << "becomes: " << endl << m1.unaryExpr(ptr_fun(ramp)) << endl;
return 0;
}