将矩阵乘以向量

时间:2014-02-06 20:23:35

标签: arrays matlab

我有矩阵A(n,m),我想将它乘以向量b(n),因此结果B [n,m] = A [n,m] * b [n]。可以通过创建一个新的矩阵C=b*ones(1,m)然后使用点乘法:B=A.*C来实现,但这会浪费内存(A的大小为5000 * 1000)。可以使用循环。也许还有更优雅的方式呢?

2 个答案:

答案 0 :(得分:5)

使用bsxfun,仅供参考:

B = bsxfun(@times, A, b(:));

答案 1 :(得分:0)

你的第一个想法很好。使用b的元素生成C,然后乘以B = A. * C.但你是对的,它需要很多记忆。如果你做类似的事情,但创建矩阵C只是稀疏矩阵的对角线,它会做同样的事情,但节省了大量的内存。

B = spdiags(b,0,n,n)*A;

您的矩阵现在位于A的左侧,因为您正在缩放行,但是将新的对角矩阵放在左侧,您将对列执行相同的操作。