2013-09-23 132 views
2

我有兩個矩陣AB,這兩個矩陣的大小均爲4x4。被全部列將一個矩陣的所有列乘以另一個矩陣bsxfun

bsxfun(@times, A(:,1),B) 

但我想要做的就是重複此操作的A每一列,乘法A所有列:用的B所有其他列相乘的A第一列的B。我怎樣才能做到這一點bsxfun(沒有循環或repmat)?

+3

'bsxfun'非常有趣! – Shai

回答

4

是,通過permuting的矩陣中的一個的尺寸,使之成爲4x1x4數組:

permute(bsxfun(@times, A, permute(B, [1 3 2])), [1 3 2]) 
+2

+1,但看起來好像你的編輯會產生一個移位的結果。我糾正了你的答案! –

+0

@EitanT謝謝! –

+0

感謝您的回答和編輯。 –

0

或者:

>> n = size(A, 1); 
>> res = arrayfun(@(x) A(:, x) * ones(1, n) .* B, 1 : n, 'UniformOutput', false) 

res = 

    [4x4 double] [4x4 double] [4x4 double] [4x4 double] 

的註記:在Matlab 「乘」 默認裝置矩陣乘法,這將只是res = A' * B。你問的是元素明智的乘法。

相關問題