每列矩阵的eigen3阵列矩阵向量积

时间:2017-01-20 23:31:59

标签: c++ matrix vector product eigen3

我有一个数组和一个向量:

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

现在我想将m1的每一行与v1

相乘

(就像你在Matlab中做m1.*v1一样。

我现在所拥有的是:

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

可以使用一些特征函数以更优雅的方式完成吗?

1 个答案:

答案 0 :(得分:1)

这应该有效:

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

如果效率很重要,您应该考虑将m1result存储在Array<double, Dynamic, Dynamic, RowMajor>v1中的Array<double, 1, Dynamic>