我有一个数组和一个向量:
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;
}
可以使用一些特征函数以更优雅的方式完成吗?
答案 0 :(得分:1)
这应该有效:
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>