2

我有两个矩阵A,并且B都是大小4x4。将 的第一列A与 的所有其他列相乘B

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

但我想做的是对 的每一列重复此操作,即将 的A所有乘以A的所有列B。我怎样才能做到这一点bsxfun(没有循环或repmat)?

4

2 回答 2

4

是的,通过排列其中一个矩阵的维度使其成为 4x1x4 数组:

permute(bsxfun(@times, A, permute(B, [1 3 2])), [1 3 2])
于 2013-09-23T13:00:09.303 回答
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的 . 你问的是元素明智的乘法。

于 2013-09-23T20:05:53.693 回答