我有矩阵A(n,m),我想将它乘以向量b(n),因此结果B [n,m] = A [n,m] * b [n]。可以通过创建一个新的矩阵C=b*ones(1,m)
然后使用点乘法:B=A.*C
来实现,但这会浪费内存(A
的大小为5000 * 1000)。可以使用循环。也许还有更优雅的方式呢?
答案 0 :(得分:5)
使用bsxfun
,仅供参考:
B = bsxfun(@times, A, b(:));
答案 1 :(得分:0)
你的第一个想法很好。使用b的元素生成C,然后乘以B = A. * C.但你是对的,它需要很多记忆。如果你做类似的事情,但创建矩阵C只是稀疏矩阵的对角线,它会做同样的事情,但节省了大量的内存。
B = spdiags(b,0,n,n)*A;
您的矩阵现在位于A的左侧,因为您正在缩放行,但是将新的对角矩阵放在左侧,您将对列执行相同的操作。