Hvordan søke konvolusjon i MATLAB uten å bruke funksjons

Hvordan søke konvolusjon i MATLAB uten å bruke funksjons


Konvolusjon er en matematisk operasjon som kombinerer to funksjoner i forhold til overlappingen av en funksjon som den er forskjøvet over en annen. Selv om MATLAB inneholder en pre-bygget konvolusjon funksjon, er det mulig å beregne den diskrete convolution integral selv. Den diskrete konvolvering av to funksjoner f og g er definert som summen over området 0 til j av f (j) * g (kj).

Bruksanvisning

1 Definer to vektorer, f og g, som inneholder de to funksjonene du vil Slør. Lengden av f og g behøver ikke å være like. Lengden av resultatet av konvolusjonen, k, vil være en mindre enn summen av lengden av f og g:

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

2 Definer j over hvilket konvolusjon vil oppstå. Verdien av j er området hvor indeksene for de to funksjonene som skal konvolveres, f (j) og g (k + 1-n), er lovlig. Verdien av en lagt til k er å ta hensyn til det faktum at MATLAB begynner indeksering vektorer på en heller enn 0:

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

3 Preallocate plass for resultatet av konvolusjonen:

my_result = zeros (k);

4 Skriv en for loop for å iterere gjennom verdier av k:

for result_index = 1: k

5 Beregn konvolusjon for alle verdier av j:

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

6 Lukk for loop med "slutt" kommandoen.