如何使用Eigen3进行元素乘法?
是否
a = a.cwiseProduct(b);
到位了?或者是
a.array() *= b.array();
在风格和性能方面更好的解决方案?
最佳答案 两个表达式都应该生成相同的代码(使用合理优化的编译器),因此它更像是一个品味问题.
如果你主要使用a和b进行元素操作,你应该将它们声明为Eigen :: Array(而不是Eigen :: Matrix)并且只写一个* = b;.如果以后需要以矩阵方式访问a或b,仍然可以使用a.matrix().
如何使用Eigen3进行元素乘法?
是否
a = a.cwiseProduct(b);
到位了?或者是
a.array() *= b.array();
在风格和性能方面更好的解决方案?
最佳答案 两个表达式都应该生成相同的代码(使用合理优化的编译器),因此它更像是一个品味问题.
如果你主要使用a和b进行元素操作,你应该将它们声明为Eigen :: Array(而不是Eigen :: Matrix)并且只写一个* = b;.如果以后需要以矩阵方式访问a或b,仍然可以使用a.matrix().