Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Eigen3: coefficient-wise multiplication in place

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?

like image 542
PhilLab Avatar asked Aug 15 '14 14:08

PhilLab


1 Answers

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().

like image 179
chtz Avatar answered Nov 15 '22 19:11

chtz