2013-07-22 215 views
0

在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

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

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

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

+0

不错的使用imresize'的';) – Shai

+0

是啊,但它需要图像处理工具箱... –

+0

虽然 – MZimmerman6

1

可以置换,重塑,乘法逐元素,再置换,重塑背部:

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

+ +1解决方案没有任何工具箱 – MZimmerman6