2013-09-23 103 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。你问的是元素明智的乘法。

相关问题