我有兩個矩陣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