>> Électroniques Technologie >  >> Maison intelligente >> Vie intelligente

Comment appliquer la convolution dans MATLAB sans utiliser la fonction

La convolution est une opération mathématique qui mélange deux fonctions par rapport au chevauchement d'une fonction lorsqu'elle est décalé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 la plage 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 des longueurs de f et g :

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éallouez 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 :

my_result(k) =sum(f(j) .* g(k-j+1));

Étape 6

Fermez la boucle for avec la commande "end".


Vie intelligente