Dlaczego podczas splotu na sygnale musimy odwracać odpowiedź impulsową podczas procesu?
convolution
impulse-response
Winuall
źródło
źródło
Odpowiedzi:
Na podstawie odpowiedzi na inne pytanie (jak wspomniano w komentarzu) w nadziei, że to pytanie nie będzie wielokrotnie zadawane przez Wiki Wiki jako jedno z najważniejszych pytań ...
Rozkładamy sygnał wejściowy na sumę skalowanych sygnałów impulsu jednostkowego. Odpowiedź systemu na jednostkowy sygnał impulsowy to odpowiedź impulsowa lub odpowiedź impulsowa i tak według właściwości skalowania pojedyncza wartość wejściowa lub, jeśli wolisz tworzy odpowiedź ⋯ , 0 , 0 , 1 , 0 , 0 , ⋯ h [ 0 ] , h [ 1 ] , ⋯ , h [ n ] , ⋯ x [ 0 ] x [ 0 ] ( ⋯ , 0 , 0 , 1 , 0 , 0 , ⋯ ) = ⋯ 0 , 0 ,x ⋯, 0, 0, 1, 0, 0,⋯
Podobnie, pojedyncza wartość wejściowa lub tworzy tworzy odpowiedź Zauważ opóźnienie w odpowiedzi na . Możemy kontynuować w tym duchu, ale najlepiej jest przejść do bardziej tabelarycznej formy i pokazać różne wyniki odpowiednio dopasowane w czasie. Mamyx[1]
możesz uzyskać odpowiedź, sumując kolumnę, aby uzyskać ukochaną formułę splotu, która wprawia w osłupienie pokolenia studentów, ponieważ reakcja impulsowa wydaje się być „odwrócona” lub cofnięta w czasie. Ale ludzie wydają się zapominać o tym, że zamiast tego moglibyśmy napisać więc to wejście wydaje się „przewrócone” lub biegnie wstecz w czasie! Innymi słowy, są to ludzien
źródło
Oto przykład C / C ++, który pokazuje, że splot można wykonać bez użycia odpowiedzi impulsowej w odwrotnej kolejności. Jeśli sprawdzisz
convolve_scatter()
funkcję, żadna zmienna nie zostanie nigdzie zanegowana. Jest to splot rozpraszający, w którym każda próbka wejściowa jest rozproszona (zsumowana) do wielu próbek wyjściowych w pamięci, przy użyciu wag podanych w odpowiedzi impulsowej. Jest to marnotrawstwo, ponieważ próbki wyjściowe będą musiały zostać kilkakrotnie odczytane i zapisane.Zwykle splot odbywa się jako gromadzenie splotu, jak w
convolve_gather()
. W tej metodzie każda próbka wyjściowa jest tworzona osobno, poprzez zebranie (zsumowanie) próbek wejściowych, z odwróconą odpowiedzią impulsową jako odważnikami. Próbka wyjściowa znajduje się w rejestrze procesora używanym jako akumulator podczas tego procesu. Jest to zwykle metoda z wyboru, ponieważ na każdą filtrowaną próbkę przypada tylko jeden zapis pamięci. Teraz jest więcej odczytów pamięci na wejściu, ale tylko tyle, ile było odczytów pamięci na wyjściu w metodzie rozpraszania.Splot sekwencji:
i używając obu metod splotu wyjścia:
Nie mogę sobie wyobrazić nikogo używającego metody rozpraszania, chyba że filtr zmienia się w czasie, w którym to przypadku dwie metody przyniosą różne wyniki, a jedna może być bardziej odpowiednia.
źródło
Jest tylko „odwracany” do obliczeń punktowych.
@Dipip wyjaśnia, co reprezentuje całka / sumowanie splotowe, ale aby wyjaśnić, dlaczego jedna z dwóch funkcji wejściowych (często
h(t)
) jest odwracana do celów obliczeniowych, rozważ system dyskretny zx[n]
reakcją wejściową i impulsowąh[n]
:Możesz wziąć swoją funkcję wejściową
x[n]
i dla każdej niezerowej * próbkix[n]
obliczyć skalowaną odpowiedź impulsową z próbkin
i dalej, dopóki przesunięcie czasowe nieh[n]
spadnie do zera (zakładając przyczynęh[n]
). Oznaczałoby to brak „odwracania” (a ściślej „odwrócenia czasu”) jednegox[n]
lub drugiegoh[n]
. Jednak na końcu musiałbyś dodać / nałożyć wszystkie te przeskalowane + przesunięte „echa” odpowiedzi impulsowej dla każdego niezerowegox[n]
.Lub , dla wygody, możesz odwrócić w czasie jedną z funkcji dotyczących początku czasu (zwykle 0), dzięki czemu Twoje obliczenia {pomnóż, dodaj, pomnóż, dodaj, ...} zamiast {pomnóż, pomnóż, ..., dodaj , Dodaj, ...}. Daje to ten sam sygnał wyjściowy, ponieważ wykona dokładnie taką samą operację mnożenia i dodawania. Na przykład pomyśl o wkładzie wyjściowym niezerowego sygnału wejściowego w czasie 0
x[0]
. Gdyk
= 0 dla równania odpowiedź impulsowa zostanie odwrócona w czasie, ale nie przesunięta, dając nam pierwszą próbkę odpowiedzi, dla której jest . Następnie zwiększenie o jeden spowoduje przesunięcie w prawo o jeden krok czasowy, tak że czas zostanie odwróconyh[n]
x[n]
x[0]h[0]
k
h[n]
h[n]
Drugi wpis (h[1]
) będzie teraz leżał na wierzchux[0]
i czeka na pomnożenie. To da pożądany wkładx[0]h[1]
w czasien=1
, tak jak zrobiłby to poprzedni sposób.* Mówię niezerowe,
x[n]
ponieważ odpowiedź impulsowa jest skalowana do zera, nie przyczyniając się w ten sposób do ostatecznego wyniku .h[n]
y[n]
źródło
Przy indeksie c [n] splot a [n] ib [n] jest taki, że:
„c [n] jest sumą wszystkich produktów (a [k] b [m]) takich, że m + k = n,” więc m = n - k lub k = n - m, co oznacza, że jedna z sekwencji musi zostać odwrócony.
Dlaczego więc przede wszystkim tak zachowuje się splot? Ze względu na jego związek z mnożeniem wielomianów.
Pomnożenie dwóch wielomianów powoduje powstanie nowego wielomianu ze współczynnikami efektywności. Współczynniki wielomianu produktu określają działanie splotu. Teraz, w przetwarzaniu sygnałów, funkcje przesyłania - transformaty Laplace'a lub transformaty Z są wielomianami, przy czym każdy współczynnik wydajności odpowiada innemu opóźnieniu czasowemu. Dopasowanie współczynników produktu i mnożników powoduje, że „zwielokrotnienie w jednej reprezentacji odpowiada splotowi w transformowanej reprezentacji”.
źródło
Podczas splotu wcale nie musi wystąpić żadne „odwrócenie” odpowiedzi impulsowej ...
Jeśli jednak chcesz zapobiec jakiejkolwiek zmianie fazy, możesz zwołać sygnał z odpowiedzią impulsową, a następnie odwrócić odpowiedź impulsową i ponownie zwoić, aby anulować efekty fazowe.
W przetwarzaniu offline równie łatwo można odwrócić sygnał po pierwszym spięciu, aby dojść do tego samego wniosku (jak sugerują komentarze).
źródło
Po prostu napisz całkę konwolucji zamiast falowania ręcznego mianowicie całkowanie iloczynu i we wszystkich parach argumentów sumujących się do .
Teraz forma falowania dłoni wyraźnie pokazuje symetrię tutaj zaangażowaną i że nie ma tu miejsca żadne „odwracanie”. Przekształcenie go w odpowiednią całkę jednowymiarową wymaga jednak uczynienia jednego z dwóch argumentów rzeczywistą zmienną całkującą. Jest to albo znalezienie sztywnej symetrycznej formy, która nie wymaga falowania ręcznego. Ten ostatni jest trudniejszy. Zasadniczo musisz odzyskać normalizację, tworząc coś (przy użyciu funkcji / dystrybucji delty Diraca), na przykład Jeśli następnie zmienisz układ w jeden sposób, otrzymasz oraz z właściwości przesiewania operatora Dirac ∫ t 1 f ( t 1 )
źródło