Comment appliquer la convolution dans MATLAB sans utiliser la fonction

Gros plan de l'équation mathématique

MATLAB contient une fonction de convolution prédéfinie.

Crédit d'image : Images Thinkstock/Comstock/Getty Images

La convolution est une opération mathématique qui mélange deux fonctions par rapport au chevauchement d'une fonction lorsqu'elle est déplacée sur une autre. Bien que MATLAB contienne une fonction de convolution prédéfinie, il est possible de calculer vous-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 souhaitez convoluer. Les longueurs de f et g ne doivent pas nécessairement être égales. La longueur du résultat de la convolution, k, sera un de moins que la somme de la longueur de f et g :

Vidéo du jour

m = longueur (f); n = longueur (g); k = m + n - 1 ;

Étape 2

Définissez la plage j sur laquelle la convolution se produira. La valeur de j est la plage où les indices des deux fonctions à convoluer, f (j) et g (k+1-n), sont légaux. La valeur de 1 ajoutée à k tient compte du fait que MATLAB commence à indexer les vecteurs à 1 plutôt qu'à 0 :

j = max (1,k+1-n):min (k, m)

Étape 3

Préallouer de l'espace pour le résultat de la convolution :

mon_résultat = zéros (k);

Étape 4

Écrivez une boucle for pour parcourir les valeurs de k :

pour result_index = 1:k

Étape 5

Calculez la convolution pour toutes les valeurs de j :

mon_résultat (k) = somme (f(j) .* g (k-j+1));

Étape 6

Fermez la boucle for avec la commande "end".