Hey là, j'ai eu de la difficulté à écrire l'équivalent matlab de la fonction conv(x,y)
. Je n'arrive pas à comprendre pourquoi cela donne la sortie incorrecte. Pour les réseaux x1 = [1 2 1]
et x2 = [3 1 1]
.Fonction de convolution écrite dans MATLAB donnant des problèmes
Voici ce que j'ai
x1 = [1 2 1];
x2 = [3 1 1];
x1len = leng(x1);
x2len = leng(x2);
len = x1len + x2len - 1;
x1 = zeros(1,len);
x2 = zeros(1,len);
buffer = zeros(1,len);
answer = zeros(1,len);
for n = 1:len
buffer(n) = x(n);
answer(n) = 0;
for i = 1:len
answer(n) = answer(n) + x(i) * buffer(i);
end
end
Matlab conv(x1,x2)
donne 3 7 6 3 1
que la sortie mais cela me donne 3 5 6 6 6
pour réponse. Où est-ce que je me suis trompé?
Aussi, désolé pour le formatage je suis sur Opera Mini.
can output = somme (spdiags (flipud (X (:)) * Y)); être étendu pour la convolution 2D? – user1816546