tento příklad ukazuje, jak stanovit rovnocennost mezi lineární a kruhovou konvolucí.
lineární a kruhová konvoluce jsou zásadně odlišné operace. Existují však podmínky, za kterých jsou lineární a kruhová konvoluce ekvivalentní. Stanovení této rovnocennosti má důležité důsledky. Pro dva vektory, x
a y
, je kruhová konvoluce rovna inverzní diskrétní Fourierově transformaci (DFT) součinu DFT vektorů. Znalost podmínek, za kterých jsou lineární a kruhová konvoluce ekvivalentní, vám umožňuje použít DFT k efektivnímu výpočtu lineárních konvolucí.
lineární konvoluce n-bodového vektoru x
a vektoru l-bodu y
má délku N + L-1 .
aby byla kruhová konvoluce x a y rovnocenná, musíte vektory vložit nulami na délku alespoň N + L-1, než vezmete DFT. Po převrácení produktu DFT si ponechte pouze první prvky N + L – 1.
vytvořte dva vektory, x
a y
, a vypočítejte lineární konvoluci dvou vektorů.
x = ;y = ;clin = conv(x,y);
výstup má délku 4 + 3-1.
vložte oba vektory s nulami na délku 4 + 3-1. Získejte DFT obou vektorů, vynásobte DFT a získejte inverzní DFT produktu.
xpad = ;ypad = ;ccirc = ifft(fft(xpad).*fft(ypad));
kruhová konvoluce vektorů s nulovým polstrováním xpad
a ypad
je ekvivalentní lineární konvoluci x
a y
. Ponecháte si všechny prvky ccirc
, protože výstup má délku 4+3-1.
vykreslete výstup lineární konvoluce a inverzní součin DFT, abyste ukázali ekvivalenci.
subplot(2,1,1)stem(clin,'filled')ylim()title('Linear Convolution of x and y')subplot(2,1,2)stem(ccirc,'filled')ylim()title('Circular Convolution of xpad and ypad')
vložte vektory na délku 12 a získejte kruhovou konvoluci pomocí inverzního DFT produktu DFT. Ponechte pouze první prvky 4 + 3-1, abyste dosáhli ekvivalentního výsledku jako lineární konvoluce.
N = length(x)+length(y)-1;xpad = ;ypad = ;ccirc = ifft(fft(xpad).*fft(ypad));ccirc = ccirc(1:N);
software Signal Processing Toolbox™ má funkci cconv
, která vrací kruhovou konvoluci dvou vektorů. Lineární konvoluci x
a y
můžete získat pomocí kruhové konvoluce s následujícím kódem.
ccirc2 = cconv(x,y,6);
cconv
interně používá stejný postup založený na DFT ilustrovaný v předchozím příkladu.