2015-12-21 361 views
0

我有一個矩陣M [1,98]和矩陣N [1,x],我們假設在這種情況下x = 16。 我想要的是將N乘以M,使得按元素求和,並且遞增矩陣M.以得到[1,98]的輸出的最終性。乘法矩陣Matlab

這有點令人困惑。一個例子:

M=[2 3 4 5 6 7] 
N=[1 2 3] 

it1=(2*1)+(3*2)+(4*3)+(5*0)+...=20 
it2=(3*1)+(4*2)+(5*3)+(6*0)+...=26 
it3=.. 

Output=[20 26 ... ... ... ...] 

像這樣,直到結束,但考慮矩陣N變量的大小。 M總是一樣的大小。

+1

我不明白的算法。當你接近'M'的邊緣時會發生什麼,就像第5次迭代沒有什麼可以乘以N(3)一樣? – excaza

回答

8

這是一個convolution

result = conv(M, N(end:-1:1), 'valid'); 

達到你想要你需要翻轉第二向量並保持卷積(無邊框效果)的只有「有效」的部分結果。

在您的例子:

>> M = [2 3 4 5 6 7]; 
>> N = [1 2 3]; 
>> result = conv(M, N(end:-1:1), 'valid') 
result = 
    20 26 32 38 
+1

我猜他不相信自己的要求;) – excaza

+1

@excaza是的,輸出尺寸應該小於輸入尺寸:-) –