Kaip taikyti konvoliuciją MATLAB nenaudojant funkcijos

Iš arti matematinės lygties

MATLAB yra iš anksto sukurta konvoliucijos funkcija.

Vaizdo kreditas: Thinkstock Images/Comstock/Getty Images

Konvoliucija yra matematinė operacija, kuri sujungia dvi funkcijas, palyginti su vienos funkcijos persidengimu, kai ji perkeliama į kitą. Nors MATLAB yra iš anksto sukurta konvoliucijos funkcija, galima savarankiškai apskaičiuoti diskrečiųjų konvoliucijos integralą. Dviejų funkcijų f ir g diskrečioji konvoliucija apibrėžiama kaip suma per f (j) * g (k-j) diapazoną nuo 0 iki j.

1 žingsnis

Apibrėžkite du vektorius, f ir g, turinčius dvi funkcijas, kurias norite sujungti. F ir g ilgiai neturi būti lygūs. Konvoliucijos rezultato ilgis k bus vienu mažesnis už f ir g ilgių sumą:

Dienos vaizdo įrašas

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

2 žingsnis

Apibrėžkite diapazoną j, per kurį vyks konvoliucija. J reikšmė yra diapazonas, kuriame dviejų sujungiamų funkcijų – f (j) ir g (k+1-n) – indeksai yra teisėti. 1 vertė pridedama prie k turi atsižvelgti į tai, kad MATLAB pradeda indeksuoti vektorius nuo 1, o ne nuo 0:

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

3 veiksmas

Iš anksto paskirkite erdvę konvoliucijos rezultatui:

mano_rezultatas = nuliai (k);

4 veiksmas

Parašykite for kilpą, kad kartotumėte k reikšmes:

rezultato_indeksui = 1:k

5 veiksmas

Apskaičiuokite visų j verčių konvoliuciją:

mano_rezultatas (k) = suma (f(j) .* g (k-j+1));

6 veiksmas

Uždarykite ciklą su komanda "end".