convoluție liniară și circulară

acest exemplu arată cum se stabilește o echivalență între convoluție liniară și circulară.

convoluția liniară și circulară sunt operații fundamental diferite. Cu toate acestea, există condiții în care convoluția liniară și circulară sunt echivalente. Stabilirea acestei echivalențe are implicații importante. Pentru doi vectori, x și y, convoluția circulară este egală cu transformata Fourier discretă inversă (DFT) a produsului DFT-urilor vectorilor. Cunoașterea condițiilor în care convoluția liniară și circulară sunt echivalente vă permite să utilizați DFT pentru a calcula eficient convoluțiile liniare.

convoluția liniară a unui vector punct N, x și a unui vector punct l, y, are lungimea N + L-1.

pentru ca convoluția circulară a lui x și y să fie echivalentă, trebuie să tamponați vectorii cu zerouri la lungime cel puțin N + L – 1 înainte de a lua DFT. După ce inversați produsul DFTs, păstrați numai primele elemente N + L – 1.

creați doi vectori, x și y și calculați convoluția liniară a celor doi vectori.

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

ieșirea are lungimea 4 + 3-1.

Pad ambii vectori cu zerouri la lungimea 4+3-1. Obțineți DFT-ul ambilor vectori, înmulțiți DFT-urile și obțineți DFT-ul invers al produsului.

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

convoluția circulară a vectorilor căptușiți cu zero, xpad și ypad, este echivalentă cu convoluția liniară a xși y. Păstrați toate elementele ccirc deoarece ieșirea are lungimea 4 + 3-1.

trasați rezultatul convoluției liniare și inversul produsului DFT pentru a arăta echivalența.

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

figura conține 2 axe. Axele 1 cu titlu convoluție liniară de x și y conține un obiect de tip stem. Axe 2 cu convoluție circulară titlu de xpad și ypad conține un obiect de tip stem.

împingeți vectorii la lungimea 12 și obțineți convoluția circulară folosind DFT invers al produsului DFT. Păstrați doar primele 4 + 3-1 elemente pentru a produce un rezultat echivalent cu convoluția liniară.

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

software-ul de procesare a semnalelor de procesare a semnalului are o funcție, cconv, care returnează convoluția circulară a doi vectori. Puteți obține convoluția liniară a x și y folosind convoluția circulară cu următorul cod.

ccirc2 = cconv(x,y,6);

cconv utilizează intern aceeași procedură bazată pe DFT ilustrată în exemplul anterior.

Lasă un răspuns

Adresa ta de email nu va fi publicată.