lineáris és körkörös konvolúció

ez a példa bemutatja, hogyan lehet egyenértékűséget létrehozni a lineáris és a körkörös konvolúció között.

a lineáris és a körkörös konvolúció alapvetően különböző műveletek. Vannak azonban olyan feltételek, amelyek mellett a lineáris és a körkörös konvolúció egyenértékű. Ennek az egyenértékűségnek a megállapítása fontos következményekkel jár. Két vektor esetében, x és y, a kör alakú konvolúció megegyezik a vektorok DFT-jeinek szorzatának inverz diszkrét Fourier-transzformációjával (DFT). A lineáris és körkörös konvolúció egyenértékűségének ismerete lehetővé teszi a DFT használatát a lineáris konvolúciók hatékony kiszámításához.

egy n-pont vektor lineáris konvolúciója, x és egy L-pont vektor, y, hossza N + L – 1.

ahhoz, hogy X és y körkörös konvolúciója ekvivalens legyen, a vektorokat nullákkal kell kitölteni legalább N + L – 1 hosszúságúra, mielőtt a DFT-t vesszük. Miután megfordította a DFTs termékét, csak az első N + L – 1 elemeket tartsa meg.

hozzon létre két vektort, x és y, és kiszámolja a két vektor lineáris konvolúcióját.

x = ;y = ;clin = conv(x,y);

a kimenet hossza 4 + 3-1.

mindkét vektort nullákkal illessze be a 4+3-1 hosszúságig. Szerezzük be mindkét vektor DFT-jét, szorozzuk meg a DFT-ket, és kapjuk meg a termék inverz DFT-jét.

xpad = ;ypad = ;ccirc = ifft(fft(xpad).*fft(ypad));

a nullapárnázott Vektorok (xpad és ypad) kör alakú konvolúciója egyenértékű a x és ylineáris konvolúcióval. A ccirc összes elemét megtartja, mert a kimenet hossza 4 + 3-1.

ábrázoljuk a lineáris konvolúció kimenetét és a DFT-szorzat inverzét az ekvivalencia megjelenítéséhez.

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')

az ábra 2 tengelyt tartalmaz. Tengelyek 1 cím lineáris Konvolúciója x és y tartalmaz egy objektum típusú stem. Tengelyek 2 cím körkörös konvolúció xpad ypad tartalmaz egy objektumot típusú stem.

a vektorokat a 12-es hosszra illesztjük, és a DFT-k szorzatának inverz DFT-jével kapjuk meg a kör alakú konvolúciót. Csak az első 4+3-1 elemet tartsa meg, hogy a lineáris konvolúcióval egyenértékű eredményt kapjon.

N = length(x)+length(y)-1;xpad = ;ypad = ;ccirc = ifft(fft(xpad).*fft(ypad));ccirc = ccirc(1:N);

a Signal Processing Toolbox (jelfeldolgozó eszköztár) szoftvernek van egy cconv funkciója, amely két Vektor kör alakú konvolúcióját adja vissza. A x és y lineáris konvolúciót a következő kóddal körkörös konvolúcióval kaphatjuk meg.

ccirc2 = cconv(x,y,6);

cconv belsőleg ugyanazt a DFT-alapú eljárást használja, amelyet az előző példa szemléltet.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.