如何使用Eigen3在适当位置执行逐元素乘法?
做
a = a.cwiseProduct(b);
运行到位?或者是
a.array() *= b.array();
在样式和性能方面更好的解决方案?
最佳答案
这两个表达式都应生成相同的代码(使用经过合理优化的编译器),因此这更多是一个品味问题。
如果您主要使用a
和b
进行基于元素的操作,则应将它们声明为Eigen::Array
(而不是Eigen::Matrix
),而只需编写a*=b;
即可。如果以后需要以矩阵形式访问a
或b
,仍然可以使用a.matrix()
。
关于optimization - Eigen :就位系数乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25328694/