不同维度矩阵的元素乘法

时间:2013-07-22 14:44:16

标签: matlab matrix

在Matlab中,我需要将元素两个M x N和M x kN维矩阵相乘。换句话说,它们具有相同的高度,但第二个矩阵的宽度是k倍,因此矩阵A中的每个元素必须乘以矩阵B中行的k个元素。

解释起来有点棘手,如果不清楚,我很抱歉。显然我知道。*但我无法弄清楚如何让这个工作。

A = [2 3;...
    4 5]
B = [9 8 7 6;...
    8 7 6 5]

我需要乘以| 2 * 9,2 * 8,3 * 7,3 * 6 | 4 * 8,4 * 7,5 * 6,5 * 5 |得到结果

C = [18 16 21 18;...
    32 28 30 25]

这可以在不诉诸繁琐的循环的情况下有效地完成吗?谢谢你们!

2 个答案:

答案 0 :(得分:2)

你可以做这样的事情,这似乎是你想要的,并提供与你发布的相同的结果。

A = [2 3;
     4 5];
B = [9 8 7 6;
     8 7 6 5];
A = imresize(A,size(B),'nearest');
C = A.*B

这只会在你呈现的特定情况下真正起作用。它还假设您拥有图像处理工具箱

答案 1 :(得分:1)

你可以置换,重塑,逐个元素,再次置换并重新塑造:

X = bsxfun(@times, A, reshape(B.', size(A,1), size(A,2), []));  %'// elementwise
C = reshape(permute(X, [1 3 2]), size(B));
相关问题