Comment appliquer la convolution dans MATLAB sans utiliser la fonction intégrée
La convolution est une opération mathématique qui mélange deux fonctions par rapport au chevauchement de l'une alors qu'elle est décalée sur l'autre. Bien que MATLAB contienne une fonction de convolution préconstruite, il est possible de calculer soi-même l'intégrale de convolution discrète. La convolution discrète de deux fonctions f et g est définie comme la somme sur l'intervalle 0 à j de f(j) * g(k-j).
Étape 1
Définissez deux vecteurs, f et g, contenant les deux fonctions que vous voulez convoluer. Les longueurs de f et g n'ont pas à être égales. La longueur du résultat de la convolution, k, sera de un de moins que la somme des longueurs de f et g :
m = length(f); n = length(g); k = m + n - 1;
Étape 2
Définissez l'intervalle j sur lequel la convolution se produira. La valeur de j est l'intervalle où les indices des deux fonctions à convoluer, f(j) et g(k+1-n), sont légaux. La valeur 1 ajoutée à k tient compte du fait que MATLAB commence l'indexation des vecteurs à 1 plutôt qu'à 0 :
j = max(1,k+1-n):min(k,m)
Étape 3
Pré-allouez l'espace pour le résultat de la convolution :
my_result = zeros(k);
Étape 4
Écrivez une boucle for pour itérer sur les valeurs de k :
for result_index = 1:k
Étape 5
Calculez la convolution pour toutes les valeurs de j :
my_result(k) = sum(f(j) .* g(k-j+1));
Étape 6
Fermez la boucle for avec la commande « end ».
