MATLAB bevat een vooraf gebouwde convolutiefunctie.
Afbeelding tegoed: Thinkstock Images/Comstock/Getty Images
Convolutie is een wiskundige bewerking die twee functies combineert ten opzichte van de overlap van de ene functie als deze over een andere wordt verschoven. Hoewel MATLAB een vooraf gebouwde convolutiefunctie bevat, is het mogelijk om de discrete convolutie-integraal zelf te berekenen. De discrete convolutie van twee functies f en g wordt gedefinieerd als de som over het bereik 0 tot j van f (j) * g (k-j).
Stap 1
Definieer twee vectoren, f en g, die de twee functies bevatten die je wilt convolueren. De lengtes van f en g hoeven niet gelijk te zijn. De lengte van het resultaat van de convolutie, k, is één minder dan de som van de lengte van f en g:
Video van de dag
m = lengte (f); n = lengte (g); k = m + n - 1;
Stap 2
Definieer het bereik j waarover de convolutie zal plaatsvinden. De waarde van j is het bereik waar subscripts van de twee functies die moeten worden geconvolueerd, f (j) en g (k+1-n), legaal zijn. De waarde van 1 toegevoegd aan k is om rekening te houden met het feit dat MATLAB begint met het indexeren van vectoren bij 1 in plaats van 0:
j = max (1,k+1-n):min (k, m)
Stap 3
Wijs vooraf ruimte toe voor het resultaat van de convolutie:
mijn_resultaat = nullen (k);
Stap 4
Schrijf een for-lus om de waarden van k te doorlopen:
voor resultaat_index = 1:k
Stap 5
Bereken de convolutie voor alle waarden van j:
mijn_resultaat (k) = som (f(j) .* g (k-j+1));
Stap 6
Sluit de for-lus met het commando "end".