Hur man applicerar Convolution i MATLAB utan att använda funktionen

Närbild av matematisk ekvation

MATLAB innehåller en förbyggd faltningsfunktion.

Bildkredit: Thinkstock Images/Comstock/Getty Images

Konvolution är en matematisk operation som blandar två funktioner i förhållande till överlappningen av en funktion när den skiftas över en annan. Även om MATLAB innehåller en förbyggd faltningsfunktion är det möjligt att själv beräkna den diskreta faltningsintegralen. Den diskreta faltningen av två funktioner f och g definieras som summan över intervallet 0 till j av f (j) * g (k-j).

Steg 1

Definiera två vektorer, f och g, som innehåller de två funktionerna du vill konvolvera. Längderna på f och g behöver inte vara lika. Längden på resultatet av faltningen, k, kommer att vara en mindre än summan av längden av f och g:

Dagens video

m = längd (f); n = längd (g); k = m + n - 1;

Steg 2

Definiera intervallet j inom vilket faltningen ska ske. Värdet på j är intervallet där nedsänkta funktioner för de två funktionerna som ska konvolveras, f (j) och g (k+1-n), är lagliga. Värdet av 1 som läggs till k är för att ta hänsyn till det faktum att MATLAB börjar indexera vektorer vid 1 snarare än 0:

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

Steg 3

Förallokera utrymme för resultatet av faltningen:

mitt_resultat = nollor (k);

Steg 4

Skriv en for-loop för att iterera genom värdena på k:

för resultatindex = 1:k

Steg 5

Beräkna faltningen för alla värden på j:

mitt_resultat (k) = summa (f(j) .* g (k-j+1));

Steg 6

Stäng for-slingan med kommandot "slut".