Convolution er en matematisk operasjon som blander to funksjoner i forhold til overlapping av en funksjon som det er flyttet over en annen . Selv om MATLAB inneholder en pre-bygget konvolusjon funksjon, er det mulig å beregne den diskrete konvolusjon integral selv. Den diskrete konvolusjon av to funksjoner f og g er definert som summen over området 0 til j f ( j ) * g ( kj) . Instruksjoner
en
Definer to vektorer , f og g , som inneholder de to funksjonene du ønsker å convolve . Lengdene til f og g trenger ikke å være like. Lengden av resultatet av konvolusjonen , k , vil være en mindre enn summen av lengden av f og g : en
m = lengde ( f) , N = lengde (g ), k = m + n. - 1;
2
Definer verdiområdet j over hvilke konvolusjonen vil oppstå. Verdien av j er det området i subscripts av de to funksjonene som skal vridde , f ( j ) og (k g +1- N) , er lovlige . Verdien av en lagt til k er å ta hensyn til det faktum at MATLAB begynner indeksering vektorer på en heller enn 0 : en
j = max ( 1 , k +1- n ): min ( k , m)
3
Preallocate plass for resultatet av konvolusjon :
my_result = nuller ( k ) ,
4
Skriv en for loop å iterere gjennom verdier av k :
for result_index = 1 : k
5
Beregn konvolusjon for alle verdier av j : en
my_result ( k ) = sum ( f ( j ) * g ( k - j +1 )); .
6
Lukk for loop med "end "-kommandoen
< . br >