Чому потрібна згортання чи яка філософія, що стоїть за згорткою?


15

Я працюю в області відновлення цифрових зображень. Я прочитав усі речі про згортку, що для системи LTI , якщо ми знаємо її імпульсну реакцію , то ми можемо знайти її вихід, просто використовуючи згортку між входом та імпульсною реакцією.

Хтось може сказати мені, що за нею основна математична філософія? Ваш досвід роботи з нами скаже мені більше, ніж просто Інтернет-серфінг про це.



3
Я заперечую це питання, тому що на нього (або незначні його варіанти) неодноразово задавались і відповідали на цьому веб-сайті, як йдеться у коментарі пікенет. Натомість на цьому веб-сайті ви повинні мати «Інтернет-серфінг».
Діліп Сарват

Відповіді:


14

Ідея згортки

Моя улюблена експозиція теми - в одній з лекцій Бреда Осгуда про перетворення Фур'є . Обговорення згортки починається близько 36:00, але вся лекція має додатковий контекст, який варто переглянути.

Основна ідея полягає в тому, що, коли ви визначаєте щось на зразок перетворення Фур'є, а не працюєте безпосередньо з визначенням весь час, корисно отримати властивості вищого рівня, які спрощують обчислення. Наприклад, одна така властивість полягає в тому, що перетворення суми двох функцій дорівнює сумі перетворень, тобто

Ж{f+г}=Ж{f}+Ж{г}.

Це означає, що якщо у вас є функція з невідомим перетворенням, і вона може бути розкладена як сума функцій з відомими перетвореннями, ви в основному отримуєте відповідь безкоштовно.

Тепер, оскільки у нас є тотожність на суму двох перетворень, це природне питання запитати, що тотожність для добутку двох перетворень, тобто

F{f}F{g}= ?.

Виявляється, коли ви обчислюєте відповідь, згортання - це те, що з’являється. Вся деривація викладена у відео, і оскільки ваше питання здебільшого концептуальне, я не буду його резюмувати тут.

Наслідком такого наближення до згортання є те, що це невід'ємна частина способу трансформації Лапласа (з якого трансформація Фур’є є особливим випадком) перетворює лінійні постійні коефіцієнти звичайних диференціальних рівнянь (LCCODE) в алгебраїчні рівняння. Той факт, що таке перетворення доступне для того, щоб зробити аналітично відстежувані LCCODE, є великою частиною причини, чому вони вивчаються в обробці сигналів. Наприклад, цитувати Оппенгайма і Шафера :

Оскільки їх математично відносно легко охарактеризувати і тому, що вони можуть бути розроблені для виконання корисних функцій обробки сигналів, клас лінійних інваріантних систем зсуву буде вивчений широко.

Отже, одна з відповідей на питання полягає в тому, що якщо ви використовуєте методи перетворення для аналізу та / або синтезу систем LTI, рано чи пізно, згортання виникне (неявно або явно). Зауважимо, що такий підхід до введення згортки є дуже стандартним у контексті диференціальних рівнянь. Наприклад, дивіться цю лекцію Mth Arthur Mattuck . Більшість презентацій або представляють інтеграл згортки без коментарів, потім отримують його властивості (тобто витягають його з капелюха), або підшивають і хизуються про дивну форму інтеграла, говорять про гортання та перетягування, обертання часом тощо, тощо. .

Причина, що мені подобається в підході професора Осгуда, полягає в тому, що він уникає всього цього цукру, а також надає, на мою думку, глибокого розуміння того, як математики, ймовірно, прийшли до ідеї в першу чергу. І я цитую:

Я сказав: "Чи існує спосіб поєднання F і G у часовій області, щоб у частотній області множилися спектри, перетворення Фур'є множилися?" І відповідь - так, є, цим складним інтегралом. Це не так очевидно. Ви б не вставали з ліжка вранці і записували це, і очікували, що це вирішить цю проблему. Як ми це отримуємо? Ви сказали, припустимо, що проблема вирішена, подивіться, що має статися, і тоді нам доведеться визнати, коли саме час оголосити перемогу. І саме час оголосити перемогу.

Тепер, будучи недоброзичливим математиком, ви висвітлюєте свої сліди і говорите: "Ну, я просто збираюся визначити згортку двох функцій за цією формулою".

Системи LTI

У більшості текстів DSP згортання зазвичай вводиться по-іншому (що дозволяє уникнути будь-яких посилань на методи перетворення). Виражаючи довільний вхідний сигнал як суму масштабованих і зміщених одиничних імпульсів,x(n)

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

де

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

визначаючі властивості лінійних інваріантних систем часу призводять безпосередньо до суми згортки, що включає імпульсний відгук . Якщо система, визначена оператором LTI L , виражається як y ( n ) = L [ x ( n ) ] , то, застосовуючи повторювані властивості, а саме лінійністьh(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,

та інваріантність часу / зрушення

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

система може бути переписана як

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

Це дуже стандартний спосіб подання згортки, і це ідеально елегантний і корисний спосіб зробити це. Подібні похідні можна знайти в Оппенгаймі та Шафер , Проакісі та Манолакісі , Рабінері та Голді , і я впевнений у багатьох інших. Деякий більш глибоке розуміння [що йде далі , ніж стандартні введення] даються Діліпа в його чудовому відповіді тут .

Зауважте, однак, що це виведення є чимось магічним трюком. Подивившись ще один погляд на те, як сигнал розкладається в , ми можемо побачити, що він вже у формі згортки. Якщо(1)

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

то просто x δ . Оскільки функція дельти є елементом ідентичності для згортання, сказати, що будь-який сигнал може бути виражений у такій формі - це дуже схоже на те, що будь-яке число n може бути виражене як n + 0 або n × 1 . Тепер, вибір опису сигналів таким способом є геніальним, оскільки він веде безпосередньо до ідеї імпульсної реакції - просто ідея згортки вже «випалена» до розкладання сигналу.(1)xδnn+0n×1

З цієї точки зору, згортка суттєво пов'язана з ідеєю дельта-функції (тобто це двійкова операція, яка має дельта-функцію як її елемент ідентичності). Навіть не враховуючи його відношення до згортки, опис сигналу вирішально залежить від ідеї дельта-функції. Тоді виникає питання, звідки у нас в першу чергу ідея функції дельти? Наскільки я можу сказати, це йде як мінімум назад, як і у статті Фур'є з Аналітичної теорії тепла, де це неявно. Одним із джерел для отримання додаткової інформації є цей документ про походження та історію розвитку Алехандро Домінгес.

Тепер це два основних підходи до ідеї в контексті теорії лінійних систем. Один віддає перевагу аналітичному огляду, а інший підтримує числове рішення. Я думаю, що обидва корисні для повного уявлення про важливість згортки. Однак у дискретному випадку, нехтуючи лінійними системами цілком, є сенс, в якому згортання є значно старшою ідеєю.

Помноження множин

Гілберт Странг в цій лекції, що починається близько 5:46, дає добру презентацію ідеї про те, що дискретна згортання є просто поліноміальним множенням . З цієї точки зору, ідея сходить повністю до впровадження позиційних систем числення (які представляють числа неявно як поліноми). Оскільки Z-перетворення представляє сигнали як поліноми в z, то і в цьому контексті виникне згортання - навіть якщо Z-перетворення формально визначено як оператор затримки без використання складного аналізу та / або як особливий випадок Лапласа Перетворити .


дякую сер за ваші безцінні вказівки, ви щойно показали мені правильний шлях для наслідування. Ваша ця допомога навчила мене, що як бути доброю людиною починати для інших .... :)
Mayank Tiwari

Як це велике збіг пояснює, що вам потрібно зробити згортку в тому випадку, про що він запитував? Я вважаю, що в кожному домені є операція, яка перетворюється на згортку, коли ви повертаєте аргументи у часову область. Чи може нам потрібно зробити багаторазове застосування у часовій області, щоб отримати відповідь? Чому ми повинні примножувати частоти, а не промітання часу?
Вал

1
Враховуючи, що ОП вже задавало питання про роль імпульсів стосовно систем LTI , я читав це питання, використовуючи його як приклад, щоб мотивувати питання про те, звідки відбувається згортання - не обов'язково його роль у обчисленні імпульсу. відповідь як така. Це ти просиш?
datageist

1
Говорячи, що нам потрібна згортання, тому що вона ідентична множенню фур’є, звучить для мене нісенітницю, якщо ми не знаємо, для чого нам потрібне множення фур’є. Коли нам дають імпульсну відповідь, це означає часову область та згортання, а не будь-яку чорну магію на основі фур'є. Я не думаю, що посилання на це питання може пояснити це. У будь-якому випадку, не годиться давати "локалізовані відповіді" на загальні, фундаментальні (тобто філософські) питання. Питання та відповіді повинні бути корисними для майбутніх відвідувачів.
Вал

Коментований Вал коментар прямо під ціль. Цікаво, як працювали лінійні системи до винайдення / виявлення перетворень Фур'є. Як на землі нечуваючий неживий предмет виявив таку складну формулу?
Діліп Сарват

6

Я колись дав відповідь на сторінці обговорення згортки у Вікіпедії, на якій задали в основному те саме питання: Чому інверсія часу? . Філософія полягає в тому, що ви застосовуєте один імпульс в момент 0 до свого фільтра і записуєте його відповідь в момент 0,1,2,3,4,…. В основному, відповідь буде виглядати як функція, h (t). Ви можете задумати це. Якщо імпульс був у п разів вище / вище, імпульси відгуку будуть пропорційно вище (це тому, що завжди приймається лінійний фільтр). Тепер усі DSP (і не тільки DSP) - це те, що відбувається, коли ви застосуєте фільтр до свого сигналу? Ви знаєте імпульсну відповідь. Ваш сигнал (особливо цифровий) - це не що інше, як серія імпульсів висотою x (t). Він має висоту / значення в момент txt. Лінійні системи круті, що ви можете підсумовувати виходи для кожного такого вхідного імпульсу, щоб отримати функцію відгуку y (t) для функції введення x (t). Ви знаєте, що вихідний імпульс y (t = 10) залежить від негайного введення x (10), що сприяє h (0) * x (10). Але також є внесок, x (9) * h (1), у вихід з попереднього імпульсу, x (9), і внесок від ще більш ранніх вхідних значень. Ви бачите, що додаючи внески з попередніх даних, один раз аргумент зменшується, а інший збільшується. Ви MAC усі внески в y (10) = h (0) * x (10) + h (1) * x (9) + h (2) * x (8) +…, що є згорткою.

Ви можете вважати функції y (t), h (t) і x (t) як вектори. Матриці - оператори в лінійній алгебрі. Вони приймають вхідний вектор (серія чисел) і виробляють вихідний вектор (інша серія чисел). У цьому випадку y - добуток матриці згортки з вектором x,

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

Now, because convolution is a Toeplitz matrix, it has Fourier eigenbasis and, therefore, convolution operator (linear operators are represented by matrices, but matrix also depends on the basis) is a nice diagonal matrix in the fourier domain,

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


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.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.