Konvolutsiooni rakendamine MATLABis ilma funktsiooni kasutamata

Matemaatilise võrrandi lähivõte

MATLAB sisaldab eelehitatud konvolutsioonifunktsiooni.

Pildi krediit: Thinkstock Images/Comstock/Getty Images

Konvolutsioon on matemaatiline tehe, mis ühendab kaks funktsiooni ühe funktsiooni kattuvuse suhtes, kui seda teise üle nihutatakse. Kuigi MATLAB sisaldab eelehitatud konvolutsioonifunktsiooni, on võimalik diskreetse konvolutsiooni integraali ise välja arvutada. Kahe funktsiooni f ja g diskreetne konvolutsioon on defineeritud kui summa f (j) * g (k-j) vahemikus 0 kuni j.

Samm 1

Defineerige kaks vektorit f ja g, mis sisaldavad kahte funktsiooni, mida soovite konvoleerida. F ja g pikkused ei pea olema võrdsed. Konvolutsiooni tulemuse pikkus k on ühe võrra väiksem kui f ja g pikkuste summa:

Päeva video

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

2. samm

Määrake vahemik j, mille ulatuses konvolutsioon toimub. J väärtus on vahemik, kus kahe konvoleeritava funktsiooni f (j) ja g (k+1-n) alaindeksid on seaduslikud. K-le lisatud väärtus 1 on tingitud asjaolust, et MATLAB alustab vektorite indekseerimist 1-st, mitte 0-st:

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

3. samm

Eeleralda ruum konvolutsiooni tulemuse jaoks:

minu_tulemus = nullid (k);

4. samm

Kirjutage tsükkel for, et itereerida läbi k väärtuste:

tulemuse_indeks = 1:k jaoks

5. samm

Arvutage kõigi j väärtuste konvolutsioon:

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

6. samm

Sulgege for-silmus käsuga "end".