splot liniowy i kołowy

ten przykład pokazuje, jak ustalić równoważność splotu liniowego i kołowego.

splot liniowy i kołowy to zasadniczo różne operacje. Istnieją jednak warunki, w których splot liniowy i kołowy są równoważne. Ustalenie tej równoważności ma istotne konsekwencje. Dla dwóch wektorów, x i y, splot kołowy jest równy odwrotnej dyskretnej transformacji Fouriera (DFT) iloczynu DFTs wektorów. Znajomość warunków, w których sploty liniowe i kołowe są równoważne, pozwala na użycie DFT do wydajnego obliczania splotów liniowych.

splot liniowy wektora punktu n, x i wektora punktu L, y, ma długość N + L-1.

aby splot kołowy X i y był równoważny, musisz umieścić wektory z zerami o długości co najmniej N + L – 1, zanim weźmiesz DFT. Po odwróceniu iloczynu DFTs, Zachowaj tylko pierwsze elementy N + L – 1.

utwórz dwa wektory, x i y i Oblicz splot liniowy dwóch wektorów.

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

wyjście ma długość 4+3-1.

Obróć oba wektory zerami na długość 4+3-1. Uzyskaj DFT obu wektorów, pomnóż DFTs i uzyskaj odwrotność DFT produktu.

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

splot kołowy wektorów zerowych, xpad i ypad, jest równoważny splotowi liniowemu xi y. Zachowujesz wszystkie elementy ccirc, ponieważ wyjście ma długość 4+3-1.

Wykreśl wyjście splotu liniowego i odwrotność produktu DFT, aby pokazać równoważność.

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

rysunek zawiera 2 osie. Osie 1 z tytułowym Splotem liniowym X i y zawierają obiekt typu stem. Osie 2 z tytułem okrągłe splot xpad i ypad zawiera obiekt typu stem.

przyłóż wektory do długości 12 i uzyskaj splot kołowy za pomocą odwrotnego DFT iloczynu DFTs. Zachowaj tylko pierwsze 4 + 3-1 elementów, aby uzyskać równoważny wynik splotu liniowego.

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

oprogramowanie Signal Processing Toolbox™ posiada funkcję cconv, która zwraca splot kołowy dwóch wektorów. Możesz otrzymać splot liniowy x i y używając splotu kołowego z następującym kodem.

ccirc2 = cconv(x,y,6);

cconv wewnętrznie używa tej samej procedury opartej na DFT, zilustrowanej w poprzednim przykładzie.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.