How can you perform a element-wise multiplication in place using Eigen3?
Does
a = a.cwiseProduct(b);
run in place? Or is
a.array() *= b.array();
the better solution in terms of style and performance?
How can you perform a element-wise multiplication in place using Eigen3?
Does
a = a.cwiseProduct(b);
run in place? Or is
a.array() *= b.array();
the better solution in terms of style and performance?
Both expressions should generate the same code (with a reasonably optimizing compiler), so it is more a question of taste.
If you are doing mostly element-wise operations with a
and b
you should declare them as Eigen::Array
(instead of Eigen::Matrix
) and just write a*=b;
. If you need to access a
or b
in a matrix-fashion later, you can still use a.matrix()
.
© 2022 - 2024 — McMap. All rights reserved.