如何使用Eigen3执行元素乘法?
确实
a = a.cwiseProduct(b);
运行到位?或者是
a.array() *= b.array();
在风格和表现方面更好的解决方案?
答案 0 :(得分:2)
这两个表达式应该生成相同的代码(使用合理优化的编译器),因此更多的是品味问题。
如果您主要使用a
和b
执行按元素操作,则应将其声明为Eigen::Array
(而不是Eigen::Matrix
),然后只写a*=b;
}。如果您稍后需要以矩阵方式访问a
或b
,您仍然可以使用a.matrix()
。