lineaarinen ja Pyöreä konvoluutio

tämä esimerkki osoittaa, miten saadaan aikaan vastaavuus lineaarisen ja pyöreän konvoluution välillä.

lineaarinen ja kiertokulkuvoima ovat pohjimmiltaan erilaisia operaatioita. On kuitenkin olemassa ehtoja, joissa lineaarinen ja Pyöreä konvoluutio ovat samanarvoisia. Tämän vastaavuuden toteamisella on merkittäviä vaikutuksia. Kahdella vektorilla, x ja y, kiertokulkukonvoluutio on yhtä suuri kuin vektorien DFT: iden tulon Käänteinen diskreetti Fourier’ n muunnos (DFT). Kun tiedät, missä olosuhteissa lineaarinen ja Pyöreä konvoluutio vastaavat toisiaan, voit käyttää DFT: tä lineaaristen konvoluutioiden tehokkaaseen laskemiseen.

n-pistevektorin lineaarinen konvoluutio, x, ja L-pistevektorin, y, pituus on N + L – 1.

jotta x: n ja y: n kehäkonvoluutio olisi ekvivalentti, vektorit on padottava nollilla Vähintään n + L – 1: n pituisiksi ennen DFT: n ottamista. Kun olet kääntänyt tuote DFTs, säilyttää vain ensimmäinen N + L-1 elementtejä.

luodaan kaksi vektoria, x ja y, ja lasketaan näiden kahden vektorin lineaarinen konvoluutio.

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

tehot ovat pituudeltaan 4 + 3-1.

Pad molemmat vektorit nollilla pituuteen 4+3-1. Hanki DFT molempien vektorien, moninkertaistaa DFT, ja saada käänteinen DFT tuotteen.

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

nollapohjaisten vektorien, xpad ja ypad, kehäkonvoluutio vastaa lineaarista konvoluutiota x ja y. Säilytät kaikki ccirc alkuaineet, koska tuotoksen pituus on 4+3-1.

piirretään lineaarisen konvoluution tulos ja DFT-tuotteen käänteisluku osoittamaan vastaavuus.

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

kuva sisältää 2 akselia. Akselit 1, joiden otsikko on X: n ja y: n Lineaarinen konvoluutio, sisältää tyypin varren kohteen. Akselit 2 Otsikko Pyöreä konvoluutio xpad ja ypad sisältää objektin tyyppi varsi.

Pad vektorit Pituus 12 ja saada pyöreä konvoluutio käyttäen käänteistä DFT tuotteen DFT. Säilytä vain ensimmäiset 4+3-1 alkiota, jotta saadaan lineaarista konvoluutiota vastaava tulos.

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

Signal Processing Toolbox™ – ohjelmistolla on funktio cconv, joka palauttaa kahden vektorin kiertokulkua. Lineaarinen konvoluutio x ja y saadaan käyttämällä ympyräkonvoluutiota seuraavalla koodilla.

ccirc2 = cconv(x,y,6);

cconv sisäisesti käytetään samaa DFT-pohjaista menettelyä, joka on esitetty edellisessä esimerkissä.

Vastaa

Sähköpostiosoitettasi ei julkaista.