Dlaczego potrzebny jest splot lub jaka jest filozofia splotu?

15

Pracuję w dziedzinie cyfrowego odtwarzania obrazów. Przeczytałem wszystkie rzeczy o splotie, że dla systemu LTI , jeśli znamy jego odpowiedź impulsową , wówczas możemy znaleźć jego wynik, używając po prostu splotu między odpowiedzią wejściową a odpowiedzią impulsową.

Czy ktoś może mi powiedzieć, że jaka jest za tym podstawowa filozofia matematyczna? Twoje wrażenia z powiedzą mi więcej niż tylko surfowanie po Internecie.

Mayank Tiwari
źródło
3
Głosuję za odrzuceniem tego pytania, ponieważ zostało ono (lub jego niewielkie odmiany) wielokrotnie zadawane i udzielane na tej stronie, zgodnie z komentarzem pikenet. Zamiast tego powinieneś „surfować po Internecie” na tej stronie.
Dilip Sarwate

Odpowiedzi:

14

Idea konwolucji

Moja ulubiona prezentacja tego tematu znajduje się w jednym z wykładów Brada Osgooda na temat transformaty Fouriera . Dyskusja na temat splotu zaczyna się około 36:00, ale cały wykład ma dodatkowy kontekst, który warto obejrzeć.

Podstawową ideą jest to, że gdy definiujesz coś w rodzaju transformacji Fouriera, zamiast cały czas pracować bezpośrednio z definicją, przydatne jest uzyskanie właściwości wyższego poziomu, które upraszczają obliczenia. Na przykład jedną z takich właściwości jest to, że transformacja sumy dwóch funkcji jest równa sumie transformat, tj

F{f+g}=F{f}+F{g}.

Oznacza to, że jeśli masz funkcję z nieznaną transformacją i można ją rozłożyć na sumę funkcji ze znanymi transformacjami, zasadniczo otrzymujesz odpowiedź za darmo.

Ponieważ mamy tożsamość sumy dwóch transformacji, naturalnym pytaniem jest, jaka jest tożsamość iloczynu dwóch transformacji, tj.

F{f}F{g}= ?.

Okazuje się, że przy obliczaniu odpowiedzi pojawia się splot. Cała pochodna jest podana w filmie, a ponieważ twoje pytanie jest głównie koncepcyjne, nie podsumuję go tutaj.

Implikacja zbliżenia się do splotu w ten sposób jest taka, że ​​jest to nieodłączna część sposobu, w jaki transformata Laplace'a (której szczególnym przypadkiem jest transformata Fouriera) przekształca zwykłe równania różniczkowe zwyczajne o stałym współczynniku (LCCODE) w równania algebraiczne. Fakt, że taka transformacja jest dostępna, aby uczynić LCCODE możliwym do analizy analitycznym, jest dużą częścią powodu, dla którego są badane w przetwarzaniu sygnału. Na przykład, aby zacytować Oppenheim i Schafer :

Ponieważ są one stosunkowo łatwe do scharakteryzowania matematycznego i ponieważ można je zaprojektować do wykonywania użytecznych funkcji przetwarzania sygnałów, klasa systemów liniowych niezmiennych z przesunięciem zostanie gruntownie zbadana.

Tak więc jedna odpowiedź na pytanie brzmi: jeśli używasz metod transformacji do analizy i / lub syntezy systemów LTI, prędzej czy później dojdzie do splotu (pośrednio lub jawnie). Zauważ, że takie podejście do wprowadzenia splotu jest bardzo standardowe w kontekście równań różniczkowych. Na przykład zobacz wykład MIT Arthura Mattucka . Większość prezentacji albo przedstawia całkę splotu bez komentarza, a następnie czerpie jej właściwości (tj. Wyciąga ją z kapelusza), lub rąbka i maści o dziwnej formie całki, mówi o przerzucaniu i przeciąganiu, odwracaniu czasu itp. Itp. .

Powodem, dla którego podoba mi się podejście prof. Osgooda, jest to, że unika tego wszystkiego tsouris, a także, moim zdaniem, głęboki wgląd w to, w jaki sposób matematycy prawdopodobnie wpadli na ten pomysł. I cytuję:

Powiedziałem: „Czy istnieje sposób łączenia F i G w dziedzinie czasu, aby w dziedzinie częstotliwości widma się mnożyły, transformaty Fouriera mnożyły się?” Odpowiedź brzmi: tak, jest ta skomplikowana całka. To nie jest takie oczywiste. Nie wstawałbyś rano z łóżka i nie zapisywałbyś tego, i spodziewałeś się, że to rozwiąże ten problem. Jak to zdobyć? Powiedziałeś, załóżmy, że problem został rozwiązany, zobacz, co się stanie, a wtedy będziemy musieli rozpoznać, kiedy nadszedł czas, aby ogłosić zwycięstwo. I czas ogłosić zwycięstwo.

Teraz, będąc wstrętnym matematykiem, kryjesz swoje ślady i mówisz: „Cóż, po prostu zamierzam zdefiniować splot dwóch funkcji za pomocą tej formuły”.

Systemy LTI

W większości tekstów DSP splot jest zwykle wprowadzany w inny sposób (co pozwala uniknąć odniesienia do metod transformacji). Wyrażając dowolny sygnał wejściowy jako sumę skalowanych i przesuniętych impulsów jednostkowych,x(n)

(1)x(n)=k=x(k)δ(nk),

gdzie

(2)δ(n)={0,n01,n=0,

definiujące właściwości liniowych układów niezmienniczych w czasie prowadzą bezpośrednio sumę splotu obejmującą odpowiedź impulsową . Jeśli system zdefiniowany przez operatora LTI L jest wyrażony jako y ( n ) = L [ x ( n ) ] , to przez zastosowanie właściwości repatywnych, a mianowicie liniowościh(n)=L[ δ(n) ]Ly(n)=L[ x(n) ]

(3)L[ ax1(n)+bx2(n) ]Transform of the sum of scaled inputs=aL[ x1(n) ]+bL[ x2(n) ]Sum of scaled transforms,

oraz niezmienność czasu / zmiany

(4)L[ x(n) ]=y(n) impliesL[ x(nk) ]=y(nk),

system można przepisać jako

y(n)=L[k=x(k)δ(nk)]Tranform of the sum of scaled inputs=k=x(k)L[δ(nk)]Sum of scaled transforms=k=x(k)h(nk).Convolution with the impulse response

To bardzo standardowy sposób prezentowania splotu i jest to całkowicie elegancki i użyteczny sposób na obejście tego. Podobne pochodne można znaleźć w Oppenheim i Schafer , Proakis i Manolakis , Rabiner i Gold i jestem pewien, że wiele innych. Niektóre głębszy wgląd [który idzie dalej niż standardowe wprowadzeń] jest dana przez Dilip w jego doskonałą odpowiedź tutaj .

Zauważ jednak, że to wyprowadzenie jest nieco magiczną sztuczką. Patrząc jeszcze raz na rozkład sygnału w , widzimy, że ma on już postać splotu. Gdyby(1)

(fg)(n)f convolved with g=k=f(k)g(nk),

wtedy to tylko x δ . Ponieważ funkcja delta jest elementem tożsamości dla splotu, powiedzenie, że dowolny sygnał może być wyrażony w tej formie, jest bardzo podobne do powiedzenia, że ​​dowolna liczba n może być wyrażona jako n + 0 lub n × 1 . Teraz wybór opisania sygnałów w ten sposób jest genialny, ponieważ prowadzi bezpośrednio do idei odpowiedzi impulsowej - po prostu idea konwolucji jest już „wypalona” do rozkładu sygnału.(1)xδnn+0n×1

Z tej perspektywy splot jest nierozerwalnie związany z ideą funkcji delta (tj. Jest to operacja binarna, w której funkcja delta jest elementem tożsamości). Nawet bez uwzględnienia jego związku ze splotem opis sygnału zależy w głównej mierze od idei funkcji delta. Powstaje więc pytanie: skąd pomysł na funkcję delta? O ile mi wiadomo, sięga co najmniej tak daleko jak artykuł Fouriera o Analitycznej Teorii Ciepła, gdzie pojawia się niejawnie. Jednym ze źródeł dalszych informacji jest ten artykuł o pochodzeniu i historii konwolucji autorstwa Alejandro Domíngueza.

Są to dwa główne podejścia do pomysłu w kontekście teorii systemów liniowych. Jeden opowiada się za wglądem analitycznym, a drugi za rozwiązaniem numerycznym. Myślę, że oba są przydatne do pełnego obrazu znaczenia splotu. Jednak w przypadku dyskretnym, całkowicie pomijając układy liniowe, istnieje poczucie, że splot jest znacznie starszym pomysłem.

Mnożenie wielomianowe

Jedną dobrą prezentację idei dyskretnego splotu po prostu wielomianowego zwielokrotnienia podał Gilbert Strang w wykładzie rozpoczynającym się około 5:46. Z tej perspektywy idea sięga wstecz aż do wprowadzenia systemów liczb pozycyjnych (które domyślnie reprezentują liczby jako wielomiany). Ponieważ transformata Z reprezentuje sygnały jako wielomiany w z, również w tym kontekście powstanie splot - nawet jeśli transformacja Z jest formalnie zdefiniowana jako operator opóźnienia bez uciekania się do złożonej analizy i / lub jako szczególny przypadek Laplace'a Przekształć .

Datageist
źródło
dziękuję panu za nieocenione wskazówki, właśnie pokazałeś mi właściwą drogę do naśladowania. Twoja pomoc nauczyła mnie, jak być dobrym człowiekiem, zacząć dla innych .... :)
Mayank Tiwari
Jak ten wielki zbieg okoliczności wyjaśnia, że ​​musisz przeprowadzić splot w przypadku, o który poprosił? Uważam, że w każdej domenie jest operacja, która zamienia się w splot, kiedy zamieniasz argumenty w dziedzinę czasu. Może potrzebujemy multiplikacji w dziedzinie czasu, aby uzyskać odpowiedź? Dlaczego powinniśmy pomnażać częstotliwości zamiast przemiatania czasu?
Val
1
Biorąc pod uwagę, że OP zadał już pytanie o rolę impulsów w stosunku do systemów LTI , czytam to pytanie jako on, używając go jako przykładu do uzasadnienia pytania o to, skąd pochodzi splot - niekoniecznie jego rola w obliczaniu impulsu odpowiedź per se. Czy o to pytasz?
Datageist
1
Mówienie, że potrzebujemy splotu, ponieważ jest on identyczny z multiplikacją czterokierunkową, wydaje mi się nonsensem, na wypadek gdybyśmy nie wiedzieli, dlaczego potrzebujemy multiplikacji czterokierunkowej. Gdy dostaniemy odpowiedź impulsową, oznacza to domenę czasową i splot, a nie czarną magię opartą na czterech podstawach. Nie sądzę, aby odniesienie do tego pytania mogło to wyjaśnić. W każdym razie nie jest dobrze dawać „zlokalizowane odpowiedzi” na ogólne, fundamentalne (tj. Filozoficzne) pytania. Pytania i odpowiedzi muszą być przydatne dla przyszłych gości.
Val
Powyższy komentarz Val jest trafny w cel. Zastanawiam się, jak działały układy liniowe przed wynalezieniem / odkryciem transformacji Fouriera. Jak, u licha, nieświadomy obiekt nieożywiony odkrył tak skomplikowaną formułę?
Dilip Sarwate
6

Ja raz dał odpowiedź w Wikipedia stronie splot Dyskusja, która zwróciła się w zasadzie to samo pytanie: dlaczego inwersji czasowej? . Filozofia polega na tym, że przykładasz pojedynczy impuls w czasie 0 do filtra i rejestrujesz jego reakcję w czasie 0,1,2,3,4,… Zasadniczo odpowiedź będzie wyglądać jak funkcja, h (t). Możesz to wykreślić. Jeśli puls był n razy wyższy / wyższy, impulsy odpowiedzi będą proporcjonalnie wyższe (dzieje się tak, ponieważ zawsze zakłada się filtr liniowy). Teraz wszystkie DSP (i nie tylko DSP) dotyczą tego, co się stanie, gdy zastosujesz filtr do swojego sygnału? Znasz odpowiedź impulsową. Twój sygnał (szczególnie cyfrowy) to nic innego jak seria impulsów o wysokości x (t). Ma wysokość / wartość w czasie txt. Układy liniowe są fajne, że można zsumować wyjścia dla każdego takiego impulsu wejściowego, aby uzyskać funkcję odpowiedzi y (t) dla funkcji wejściowej x (t). Wiesz, że impuls wyjściowy y (t = 10) zależy od natychmiastowego wejścia x (10), co przyczynia się do h (0) * x (10). Ale jest też wkład, x (9) * h (1), w wyjście z poprzedniego impulsu, x (9), i wkład z jeszcze wcześniejszych wartości wejściowych. Widzisz, gdy dodajesz wkłady z wcześniejszych danych wejściowych, jeden argument zmniejsza się, a drugi rośnie. Ci MAC każdy wkład język Y (10) = h (0) * x (10) + h (1) * x (9) + h (2) * x (8) + ..., który jest uwypuklony.

Funkcje y (t), h (t) i x (t) można traktować jak wektory. Macierze są operatorami w algebrze liniowej. Biorą wektor wejściowy (szereg liczb) i wytwarzają wektor wyjściowy (kolejna seria liczb). W tym przypadku y jest iloczynem macierzy splotu z wektorem x,

y=[y0y1y2]=[h000h1h00h2h1h0][x0x1x2]=Hx

Teraz, z powodu splotu jest macierzą Toeplitza , to jest, a zatem operator splot (liniowy operatorów są przedstawione matryce, ale matrycy zależy również od masy) Fouriera eigenbasis miły macierzą diagonalną w domenie Fouriera

Y=[Y0Y1Y2]=[λ0000λ1000λ2][X0X1X2]=diag(H)X

Note, much more zeroes and, thus, much simpler computation. This result is know as "convolution theorem" and, as first response answered, it is much simpler in the fourier domain. But, this is phylosophy behind the "convolution theorem", fourier basis and linear operators rather than ubiquitous need for convolution.

Normally, you do convolution because you have your input signal, impulse response and require output in time domain. You may transform into fourier space to optimize computation. But, it is not practical for simple filters, as I've seen in the DSPGuide. If your filter looks like y[currentTime]=k1x[time1]+k2x(time2)+by[time1], it makes no sense to fourier transform. You just do n multiplications, for computing every y. It is also natural for real-time. In real-time you compute only one y at a time. You may think of Fourier transform if you have your signal x recorded and you need to compute the whole vector y at once. This would need NxN MAC operations and Fourier can help to reduce them to N log(N).

Val
źródło
A couple notes: how would you extend this description for the continuous-time case (which obviously came before the discrete-time case)? Also, there are many real-time applications that use Fourier-transform-based methods for fast convolution. Saying that outputs are always calculated one at a time for real-time applications just isn't true.
Jason R
With that said, nice job pointing out the fact that the Toeplitz structure of the convolution matrix implies that it admits a diagonal representation under a Fourier basis.
Jason R
Yes, may be you use fourier transfrom in the real-time. I am far from being DSP expert. I just expressed the idea (which I got from my scarce practice and reading DSPGuide). Anyway, I want to highlight that fourier has nothing to do with the phylosophy of convolution. Might be I need to remove all the fourier-related discussion, since it is distracting. Convolution is natural in the time domain and is needed without any Fourier, no matter how cool the Fourier is.
Val
The fact that continous-time case came before historically, does not demand us that we should learn in the same order. I think that it is easier to understand the philosophy of many things, including convolution, starting with the discrete case (and we are in DSP.se to take this approach). In continous-case a series of MAC operations is turned into integration, as we make our pulses shorter and shorter. BTW, integration itself f(x)dx is understood as a limit case of the discrete summation: f(x)dx=limdx0(f(x)dx). So, it cannot come before discrete summation.
Val
@JasonR In the continuous setting, you'd replace the Toeplitz matrix by a shift-invariant operator. You then can show that the Fourier basis functions diagonalize this operator.
lp251
3

Although the previous answers have been really good, I would like to add my viewpoint about convolution where I just make it easier to visualize due to the figures.

One wonders if there is any method through which an output signal of a system can be determined for a given input signal. Convolution is the answer to that question, provided that the system is linear and time-invariant (LTI).

Assume that we have an arbitrary signal s[n]. Then, s[n] can be decomposed into a scaled sum of shifted unit impulses through the following reasoning. Multiply s[n] with a unit impulse shifted by m samples as δ[nm]. Since δ[nm] is equal to 0 everywhere except at n=m, this would multiply all values of s[n] by 0 when n is not equal to m and by 1 when n is equal to m. So the resulting sequence will have an impulse at n=m with its value equal to s[m]. This process is clearly illustrated in Figure below.

enter image description here

This can be mathematically written as

s[n]δ[nm]=s[m]δ[nm]
Repeating the same procedure with a different delay m gives
s[n]δ[nm]=s[m]δ[nm]

The value s[m] is extracted at this instant. Therefore, if this multiplication is repeated over all possible delays <m<, and all produced signals are summed together, the result will be the sequence s[n] itself.

s[n]=+s[2]δ[n+2]+s[1]δ[n+1]+s[0]δ[n]+s[1]δ[n1]+s[2]δ[n2]+=m=s[m]δ[nm]

In summary, the above equation states that s[n] can be written as a summation of scaled unit impulses, where each unit impulse δ[nm] has an amplitude s[m]. An example of such a summation is shown in Figure below.

enter image description here

Consider what happens when it is given as an input to an LTI system with an impulse response h[n].

enter image description here

This leads to an input-output sequence as

enter image description here

During the above procedure, we have worked out the famous convolution equation that describes the output r[n] for an input s[n] to an LTI system with impulse response h[n].

Convolution is a very logical and simple process but many DSP learners can find it confusing due to the way it is explained. We will describe a conventional method and another more intuitive approach.

Conventional Method


Most textbooks after defining the convolution equation suggest its implementation through the following steps. For every individual time shift n,

[Flip] Arranging the equation as r[n]=m=s[m]h[m+n], consider the impulse response as a function of variable m, flip h[m] about m=0 to obtain h[m].

[Shift] To obtain h[m+n] for time shift n, shift h[m] by n units to the right for positive n and left for negative n.

[Multiply] Point-wise multiply the sequence s[m] by sequence h[m+n] to obtain a product sequence s[m]h[m+n].

[Sum] Sum all the values of the above product sequence to obtain the convolution output at time n.

[Repeat] Repeat the above steps for every possible value of n.

An example of convolution between two signals s[n]=[211] and h[n]=[112] is shown in Figure below, where the result r[n] is shown for each n.

Note a change in signal representation above. The actual signals s[n] and h[n] are a function of time index n but the convolution equation denotes both of these signals with time index m. On the other hand, n is used to represent the time shift of h[m] before multiplying it with s[m] point-wise. The output r[n] is a function of time index n, which was that shift applied to h[m].

enter image description here

Next, we turn to the more intuitive method where flipping a signal is not required.

Intuitive Method


There is another method to understand convolution. In fact, it is built on the derivation of convolution equation, i.e., find the output r[n] as

r[n] = +s[2]h[n+2] +s[1]h[n+1] +s[0]h[n] + s[1]h[n1] + s[2]h[n2] +
Let us solve the same example as in the above Figure, where s[n]=[2 11] and h[n]=[112]. This is shown in Table below.

enter image description here

Such a method is illustrated in Figure below. From an implementation point of view, there is no difference between both methods.

enter image description here

To sum up, convolution tells us how an LTI system behaves in response to a particular input and thanks to intuitive method above, we can say that convolution is also multiplication in time domain (and flipping the signal is not necessary), except the fact that this time domain multiplication involves memory. To further understand at a much deeper level where flipping comes from, and what happens in frequency domain, you can download a sample section from my book here.

Qasim Chaudhari
źródło