Jak aplikovat konvoluci v MATLABu bez použití funkce

Detail matematické rovnice

MATLAB obsahuje předpřipravenou konvoluční funkci.

Kredit obrázku: Thinkstock Images/Comstock/Getty Images

Konvoluce je matematická operace, která spojuje dvě funkce ve vztahu k překrytí jedné funkce, když je posunuta přes druhou. Přestože MATLAB obsahuje předpřipravenou konvoluční funkci, je možné vypočítat diskrétní konvoluční integrál sami. Diskrétní konvoluce dvou funkcí f a g je definována jako součet v rozsahu 0 až j z f (j) * g (k-j).

Krok 1

Definujte dva vektory, f a g, obsahující dvě funkce, které chcete konvolvovat. Délky f a g se nemusí rovnat. Délka výsledku konvoluce, k, bude o jednu menší než součet délek f a g:

Video dne

m = délka (f); n = délka (g); k = m + n - 1;

Krok 2

Definujte rozsah j, ve kterém dojde ke konvoluci. Hodnota j je rozsah, ve kterém jsou dolní indexy dvou funkcí, které mají být konvolvovány, f (j) ag (k+1-n), přípustné. Hodnota 1 přidaná ke k má zohlednit skutečnost, že MATLAB začíná indexovat vektory na 1, nikoli na 0:

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

Krok 3

Předběžně přidělte prostor pro výsledek konvoluce:

můj_výsledek = nuly (k);

Krok 4

Napište cyklus for pro iteraci hodnot k:

pro index_výsledku = 1:k

Krok 5

Vypočítejte konvoluci pro všechny hodnoty j:

můj_výsledek (k) = součet (f(j) .* g (k-j+1));

Krok 6

Uzavřete cyklus for příkazem "end".