c++ - 矩阵每一列的 eigen3 arraywise 矩阵 vector 乘积

标签 c++ matrix vector product eigen3

我有一个数组和一个 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);

如果效率很重要,你应该考虑存储 m1resultArray<double, Dynamic, Dynamic, RowMajor>v1Array<double, 1, Dynamic>

关于c++ - 矩阵每一列的 eigen3 arraywise 矩阵 vector 乘积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41774029/

相关文章:

c++ - Visual Studio 还能优化预编译代码吗?

r - 使用 R 中的行名称合并列表的向量

r - 将列表 append 到 R 中的列表列表

r - 如何随机化向量

c++ - 关于指针和对象的问题?

c++ - 使用 std::vector 进行 Eigen::MatrixXd.block 赋值

arrays - Matlab 将向量转换为二进制矩阵

C++ 初始化 std::vector<std::unique_ptr<AbstractClass>>

c++ - 从 vector 中删除最后一个元素直到条件

c++ - 标准容器,包含不同数量的元素,但没有动态内存分配