2015-12-21 4 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 Да, размер вывода должен быть меньше размера ввода :-) –

Смежные вопросы