Sådan anvender du Convolution i MATLAB uden at bruge funktionen

Nærbillede af matematisk ligning

MATLAB indeholder en præbygget foldningsfunktion.

Billedkredit: Thinkstock Images/Comstock/Getty Images

Konvolution er en matematisk operation, der blander to funktioner i forhold til overlapningen af ​​en funktion, når den flyttes over en anden. Selvom MATLAB indeholder en forudbygget foldningsfunktion, er det muligt selv at beregne det diskrete foldningsintegral. Den diskrete foldning af to funktioner f og g er defineret som summen over området 0 til j af f (j) * g (k-j).

Trin 1

Definer to vektorer, f og g, der indeholder de to funktioner, du ønsker at konvolvere. Længderne af f og g behøver ikke at være lige store. Længden af ​​resultatet af foldningen, k, vil være én mindre end summen af ​​længden af ​​f og g:

Dagens video

m = længde (f); n = længde (g); k = m + n - 1;

Trin 2

Definer det område j over hvilket foldningen vil forekomme. Værdien af ​​j er det område, hvor sænkede funktioner af de to funktioner, der skal foldes, f (j) og g (k+1-n), er lovlige. Værdien af ​​1 tilføjet til k er for at tage højde for det faktum, at MATLAB begynder at indeksere vektorer ved 1 i stedet for 0:

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

Trin 3

Forallok plads til resultatet af foldningen:

mit_resultat = nuller (k);

Trin 4

Skriv en for-løkke for at iterere gennem værdierne af k:

for resultatindeks = 1:k

Trin 5

Beregn foldningen for alle værdier af j:

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

Trin 6

Luk for-løkken med kommandoen "afslut".