2014-02-06 311 views
2

我得到了矩陣A(n,m),我想將其乘以向量b(n),以便結果B [n,m] = A [n,m] * b [ N]。有可能通過創建一個新的矩陣C=b*ones(1,m)然後使用點乘法:B=A.*C,但它是浪費內存(A的大小是5000 * 1000)。可以使用循環。也許有更優雅的方式來做到這一點?將矩陣乘以向量

回答

5

使用bsxfun,這只是爲:

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

你的第一個想法是好的。用b的元素生成C,然後乘以B = A * C。但是你是對的,它會佔用大量的記憶。如果你做了類似的事情,但是創建矩陣C只是稀疏矩陣的對角線,它會做同樣的事情,但是會節省大量的內存。

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

你現在的矩陣是A的左側,因爲你是縮放行,但puting左新對角矩陣,你會做同樣的列。