假设我们有一个维数为MxN的矩阵A和一个维数为Mx1的向量a。在Matlab中,要增加' a'使用' A'的所有列,我们可以
bsxfun(@times, a, A)
在Eigen中是否存在等效方法,而不必遍历矩阵的列?
我正在尝试
M = bsxfun(@times, a, A) + bsxfun(@times, a2, A2)
希望Eigen的懒惰评估能让它更有效率。
谢谢!
答案 0 :(得分:4)
你可以这样做:
M = A.array().colwise()*a.array();
需要.array()
来将operator *的语义重新定义为系数方面的产品(如果A和a是Array<>
个对象则不需要。)
在这种特殊情况下,最好将其写为缩放操作:
M = a.asDiagonal() * A;
在这两种情况下,你都不会得到任何暂时的评价。