2017-01-20 2 views
0

У меня есть массив и вектор:eigen3 arraywise матрица векторное произведение для каждого столбца матрицы

ArrayXd m1(3, 1337); 
ArrayXd v1(1, 1337); 
ArrayXd result(3, 1337); 

теперь я хочу, чтобы умножить каждую строку m1 с v1

(как если бы вы сделали m1.*v1 . в Matlab

То, что я сейчас является:

for(int i=0;i<3;i++){ 
    result.row(i) = m1.row(i)*v1; 
} 

можно ли это сделать более элегантным способом, используя некоторые собственные функции?

ответ

0

Это должно работать:

ArrayXXd m1(3,1337); 
ArrayXXd v1(1,1337); 
ArrayXXd result = m1 * v1.replicate(m1.rows(),1); 

Если эффективность важна, вы должны рассмотреть хранение m1 и result в Array<double, Dynamic, Dynamic, RowMajor> и v1 через Array<double, 1, Dynamic>

+0

Спасибо, что работает для меня. – goaran

Смежные вопросы