Kuinka käyttää konvoluutiota MATLABissa ilman funktiota

Lähikuva matemaattisesta yhtälöstä

MATLAB sisältää valmiiksi rakennetun konvoluutiofunktion.

Kuvan luotto: Thinkstock Images/Comstock/Getty Images

Konvoluutio on matemaattinen operaatio, joka yhdistää kaksi funktiota suhteessa yhden funktion päällekkäisyyteen, kun sitä siirretään toisen päälle. Vaikka MATLAB sisältää valmiiksi rakennetun konvoluutiofunktion, on mahdollista laskea diskreetti konvoluutiointegraali itse. Kahden funktion f ja g diskreetti konvoluutio määritellään summana f (j) * g (k-j) välillä 0 - j.

Vaihe 1

Määritä kaksi vektoria, f ja g, jotka sisältävät kaksi funktiota, jotka haluat konvoloida. F: n ja g: n pituuksien ei tarvitse olla yhtä suuret. Konvoluution tuloksen pituus k on yksi pienempi kuin f: n ja g: n pituuksien summa:

Päivän video

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

Vaihe 2

Määritä alue j, jolla konvoluutio tapahtuu. J: n arvo on alue, jossa kahden konvoloivan funktion, f (j) ja g (k+1-n), alaindeksit ovat laillisia. Arvo 1, joka lisätään k: aan, on otettu huomioon se tosiasia, että MATLAB aloittaa vektorien indeksoinnin luvusta 1 eikä 0:sta:

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

Vaihe 3

Varaa etukäteen tilaa konvoluution tulokselle:

oma_tulos = nollia (k);

Vaihe 4

Kirjoita for-silmukka iteroidaksesi k: n arvojen läpi:

tulos_indeksi = 1:k

Vaihe 5

Laske konvoluutio kaikille j: n arvoille:

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

Vaihe 6

Sulje for-silmukka "end"-komennolla.