【发布时间】:2018-01-17 08:14:11
【问题描述】:
使用 Eigen C++ 矩阵库,如何高效 将 n x n 矩阵 A 与 n x m 矩阵 B 相乘 并将结果存储在 A 中?也就是说,我该如何避免 生成一个临时 n x m 矩阵并存储 结果直接在B?
对于 m 非常大的应用程序(例如 100000) 比 n (例如 3),这绝对是有道理的,因为它避免 超大数组的应用。
以下代码,我无法工作:
B.noalias() = A * B;
我认为,内部必须发生的事情是
以下。 B 的每一列都应该分开处理。
正在考虑的列column_i 必须复制到备份
专栏column_tmp。那么,
B(row_i, column_i) = A.row(row_i) * column_tmp; // dot-product
对于所有column_i = 0 到 m。 Eigen 中有没有办法做到这一点
高效并从其优化中获利?
【问题讨论】:
-
我认为您的意思是“将结果存储在 B 中”
标签: c++ performance matrix eigen3