2017-01-20 22 views
0

Ich habe ein Array und einen Vektor:eigen3 arraywise Matrix-Vektor-Produkt für jede Spalte der Matrix

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

jetzt will ich jede Zeile von m1 multiplizieren mit v1

(wie wenn Sie m1.*v1 tun würde . in Matlab

Was ich jetzt haben, ist:

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

kann dies auf eine etwas elegantere Weise mit einigen Eigenfunktionen geschehen?

Antwort

0

sollte diese Arbeit:

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

Wenn Effizienz wichtig ist, sollten Sie m1 und result in einem Array<double, Dynamic, Dynamic, RowMajor> und v1 in einem Array<double, 1, Dynamic>

+0

Dank speichern, die für mich funktioniert. – goaran

Verwandte Themen