我有两个矩阵A
和B
,这两个矩阵的大小均为4x4
。被全部列将一个矩阵的所有列乘以另一个矩阵bsxfun
bsxfun(@times, A(:,1),B)
但我想要做的就是重复此操作的A
每一列,即乘法A
所有列:用的B
所有其他列相乘的A
第一列的B
。我怎样才能做到这一点bsxfun
(没有循环或repmat
)?
我有两个矩阵A
和B
,这两个矩阵的大小均为4x4
。被全部列将一个矩阵的所有列乘以另一个矩阵bsxfun
bsxfun(@times, A(:,1),B)
但我想要做的就是重复此操作的A
每一列,即乘法A
所有列:用的B
所有其他列相乘的A
第一列的B
。我怎样才能做到这一点bsxfun
(没有循环或repmat
)?
是,通过permuting的矩阵中的一个的尺寸,使之成为4x1x4数组:
permute(bsxfun(@times, A, permute(B, [1 3 2])), [1 3 2])
+1,但看起来好像你的编辑会产生一个移位的结果。我纠正了你的答案! –
@EitanT谢谢! –
感谢您的回答和编辑。 –
或者:
>> 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
。你问的是元素明智的乘法。
'bsxfun'非常有趣! – Shai