【发布时间】:2018-11-18 14:41:07
【问题描述】:
我需要将两个矩阵逐行相乘。我正在尝试重新创建 matlab 的 dot() 操作,其中可以提到 dim 来执行每列/行乘法。
Eigen::MatrixXf mat_1 = Eigen::MatrixXf::Random(10, 3);
Eigen::MatrixXf mat_2 = Eigen::MatrixXf::Random(10, 3);
auto product_mat = mat_1.array().rowwise() * mat_2.array().rowwise().transpose();
这是我的尝试。我知道这是错误的,因为按行操作返回没有转置操作的类型,但我不知道如何正确执行此操作。如果可能,我不想运行循环并使用 .row(i) 访问一行。另外,请提及除文档之外的任何资源,这些资源可以快速阅读有关如何进行本征广播和其他有用操作的信息。我很难快速编写自己的代码。谢谢。
【问题讨论】:
-
您希望得到的矩阵大小是多少?
-
对两个数组的元素乘积的每一行求和。
-
哦,auto 也不做计算,你必须把它分配给一个 MatrixXf。
-
@Rzu 好的,我会试试这个。 @Matthieu Brucher 我想要一个
10x1矩阵 -
谢谢它的工作。