我有一个数组和一个 vector :
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;
}
可以使用一些 Eigen 函数以更优雅的方式完成吗?
最佳答案
这应该有效:
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>
关于c++ - 矩阵每一列的 eigen3 arraywise 矩阵 vector 乘积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41774029/