2013-07-22 181 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