Slik bruker du konvolusjon i MATLAB uten å bruke funksjonen

Nærbilde av matematisk ligning

MATLAB inneholder en forhåndsbygd konvolusjonsfunksjon.

Bildekreditt: Thinkstock Images/Comstock/Getty Images

Konvolusjon er en matematisk operasjon som blander to funksjoner i forhold til overlappingen av en funksjon når den flyttes over en annen. Selv om MATLAB inneholder en forhåndsbygd konvolusjonsfunksjon, er det mulig å beregne den diskrete konvolusjonsintegralen selv. Den diskrete konvolusjonen av to funksjoner f og g er definert som summen over området 0 til j av f (j) * g (k-j).

Trinn 1

Definer to vektorer, f og g, som inneholder de to funksjonene du vil konvolvere. Lengdene til f og g trenger ikke å være like. Lengden på resultatet av konvolusjonen, k, vil være én mindre enn summen av lengden av f og g:

Dagens video

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

Steg 2

Definer området j som konvolusjonen skal skje over. Verdien av j er området der subscripts av de to funksjonene som skal konvolveres, f (j) og g (k+1-n), er lovlige. Verdien av 1 lagt til k er for å gjøre rede for det faktum at MATLAB begynner å indeksere vektorer ved 1 i stedet for 0:

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

Trinn 3

Forhåndstildel plass for resultatet av konvolusjonen:

mitt_resultat = nuller (k);

Trinn 4

Skriv en for-løkke for å iterere gjennom verdiene av k:

for resultatindeks = 1:k

Trinn 5

Beregn konvolusjonen for alle verdiene av j:

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

Trinn 6

Lukk for-løkken med "slutt"-kommandoen.