2014-11-24 100 views
3

我有兩個矩陣,我想將第一個矩陣的每一列與第二個矩陣的一行相乘以獲得矩陣,如下所示:矩陣行與另一個列的乘法的快速方式

for j=1:size(A,2) 
    c(:,:,j) = A(:,j)*B(:,j)' ; 
end 

AB具有相同的尺寸。

有沒有一種快速的方法來做到這一點?

+0

A'''B'的尺寸,'C'? – Divakar 2014-11-24 17:27:13

+0

每個問題請提出一個問題。我刪除了你的第二個問題;如果相關,隨意發佈它作爲一個新問題。 – 2014-11-25 08:31:10

+0

@ Jean-FrançoisCorbett我可以編輯我的第一個問題作爲我的第二個問題嗎? – 2014-11-25 08:34:58

回答

3

易與bsxfun

C = bsxfun(@times, permute(A, [1 3 2]), permute(B, [3 1 2])); 
+0

應該對此好! :) – Divakar 2014-11-24 17:31:01

+1

不錯。不出所料,簡單的'for'循環對於大型矩陣來說更快(在我的系統上大於200-by-200)。可能與緩存有關。 – horchler 2014-11-24 17:51:35

+1

@horchler是的。普通循環不像以前那麼慢,這是一個「可惜」。這將部分樂趣移除到Matlab的編程上:-) – 2014-11-24 18:21:59