再講卷積的本質(zhì)及物理意義,解釋的真幽默!
點(diǎn)擊上方“程序員大白”,選擇“星標(biāo)”公眾號
重磅干貨,第一時間送達(dá)

分三個部分來理解:
1.信號的角度
2.?dāng)?shù)學(xué)家的理解(外行)
3.與多項式的關(guān)系
使用離散數(shù)列來理解卷積會更形象一點(diǎn),我們把y(n)的序列表示成y(0),y(1),y(2) and so on; 這是系統(tǒng)響應(yīng)出來的信號。
同理,x(n)的對應(yīng)時刻的序列為x(0),x(1),x(2)...and so on;
其實(shí)我們?nèi)绻麤]有學(xué)過信號與系統(tǒng),就常識來講,系統(tǒng)的響應(yīng)不僅與當(dāng)前時刻系統(tǒng)的輸入有關(guān),也跟之前若干時刻的輸入有關(guān),因為我們可以理解為這是之前時刻的輸 入信號經(jīng)過一種過程(這種過程可以是遞減,削弱,或其他)對現(xiàn)在時刻系統(tǒng)輸出的影響,那么顯然,我們計算系統(tǒng)輸出時就必須考慮現(xiàn)在時刻的信號輸入的響應(yīng)以 及之前若干時刻信號輸入的響應(yīng)之“殘留”影響的一個疊加效果。
假設(shè)0時刻系統(tǒng)的響應(yīng)為y(0),若其在1時刻時,此種響應(yīng)未改變,則1時 刻的響應(yīng)就變成了y(0)+y(1),叫序列的累加和(與序列的和不一樣)。但常常系統(tǒng)中不是這樣的,因為0時刻的響應(yīng)不太可能在1時刻仍舊未變化,那么 怎么表述這種變化呢,就通過h(t)這個響應(yīng)函數(shù)與x(0)相乘來表述,表述為x(m)×h(n-m),具體表達(dá)式不用多管,只要記著有大概這種關(guān)系,引 入這個函數(shù)就能夠表述y(0)在1時刻究竟削弱了多少,然后削弱后的值才是y(0)在1時刻的真實(shí)值,再通過累加和運(yùn)算,才得到真實(shí)的系統(tǒng)響應(yīng)。
再拓展點(diǎn),某時刻的系統(tǒng)響應(yīng)往往不一定是由當(dāng)前時刻和前一時刻這兩個響應(yīng)決定的,也可能是再加上前前時刻,前前前時刻,前前前前時刻,等等,那么怎么約束這 個范圍呢,就是通過對h(n)這個函數(shù)在表達(dá)式中變化后的h(n-m)中的m的范圍來約束的。即說白了,就是當(dāng)前時刻的系統(tǒng)響應(yīng)與多少個之前時刻的響應(yīng)的 “殘留影響”有關(guān)。
當(dāng)考慮這些因素后,就可以描述成一個系統(tǒng)響應(yīng)了,而這些因素通過一個表達(dá)式(卷積)即描述出來不得不說是數(shù)學(xué)的巧妙和迷人之處了。
卷積在數(shù)據(jù)處理中用來平滑,卷積有平滑效應(yīng)和展寬效應(yīng).
談起卷積分當(dāng)然要先說說沖擊函數(shù)----這個倒立的小蝌蚪,卷積其實(shí)就是為它誕生的?!皼_擊函數(shù)”是狄拉克為了解決一些瞬間作用的物理現(xiàn)象而提出的符號。古 人曰:“說一堆大道理不如舉一個好例子”,沖量這一物理現(xiàn)象很能說明“沖擊函數(shù)”。在t時間內(nèi)對一物體作用F的力,我們可以讓作用時間t很小,作用力F很 大,但讓Ft的乘積不變,即沖量不變。于是在用t做橫坐標(biāo)、F做縱坐標(biāo)的坐標(biāo)系中,就如同一個面積不變的長方形,底邊被擠的窄窄的,高度被擠的高高的,在數(shù)學(xué)中它可以被擠到無限高,但即使它無限瘦、無限高、但它仍然保持面積不變(它沒有被擠沒?。?,為了證實(shí)它的存在,可以對它進(jìn)行積分,積分就是求面積嘛!于是“卷積”這個數(shù)學(xué)怪物就這樣誕生了。說它是數(shù)學(xué)怪物是因為追求完美的數(shù)學(xué)家始終在頭腦中轉(zhuǎn)不過來彎,一個能瘦到無限小的家伙,竟能在積分中占有一席之 地,必須將這個細(xì)高挑清除數(shù)學(xué)界。但物理學(xué)家、工程師們確非常喜歡它,因為它解決了很多當(dāng)時數(shù)學(xué)家解決不了的實(shí)際問題。最終追求完美的數(shù)學(xué)家終于想通了, 數(shù)學(xué)是來源于實(shí)際的,并最終服務(wù)于實(shí)際才是真。于是,他們?yōu)樗可矶ㄗ隽艘惶走\(yùn)作規(guī)律。于是,媽呀!你我都感覺眩暈的卷積分產(chǎn)生了。
以下用$符號表示從負(fù)無窮大到正無窮大的積分。
一維卷積:y(t)=g(k)*x(k)=$g(k)x(t-k)
先把函數(shù)x(k)相對于原點(diǎn)反折,然后向右移動距離t,然后兩個函數(shù)相乘再積分,就得到了在t處的輸出。對每個t值重復(fù)上述過程,就得到了輸出曲線。
二維卷積:h(x,y)=f(u,v)*g(u,v)=$$f(u,v)g(x-u,y-v)
先將g(u,v)繞其原點(diǎn)旋轉(zhuǎn)180度,然后平移其原點(diǎn),u軸上像上平移x, v軸上像上平移y。然后兩個函數(shù)相乘積分,得到一個點(diǎn)處的輸出。
圖像處理中的卷積與上面的定義稍微有一點(diǎn)不同。用一個模板和一幅圖像進(jìn)行卷積,對于圖像上的一個點(diǎn),讓模板的原點(diǎn)和該點(diǎn)重合,然后模板上的點(diǎn)和圖像上對應(yīng)的 點(diǎn)相乘,然后各點(diǎn)的積相加,就得到了該點(diǎn)的卷積值。對圖像上的每個點(diǎn)都這樣處理。由于大多數(shù)模板都是對稱的,所以模板不旋轉(zhuǎn)。
把一個點(diǎn)的像素值用它周圍的點(diǎn)的像素值的加權(quán)平均代替。
有一個七品縣令,喜歡用打板子來懲戒那些市井無賴,而且有個慣例:如果沒犯大罪,只打一板,釋放回家,以示愛民如子。
縣令大人噤著鼻子,呆呆地盯著案子上的驚堂木,擰著眉頭思考一個問題:這三十個大板子怎么不好使捏?......想當(dāng)初,本老爺金榜題名時,數(shù)學(xué)可是得了滿分,今天好歹要解決這個問題:
——人(系統(tǒng)?。┌ぐ遄樱}沖?。┮院螅瑫惺裁幢憩F(xiàn)(輸出?。?/span>
——看疼到啥程度。像這無賴的體格,每天挨一個板子啥事都不會有,連哼一下都不可能,你也看到他那得意洋洋的嘴臉了(輸出0);如果一次連揍他十個板子,他可 能會皺皺眉頭,咬咬牙,硬挺著不哼(輸出1);揍到二十個板子,他會疼得臉部扭曲,象豬似地哼哼(輸出3);揍到三十個板子,他可能會象驢似地嚎叫,一把 鼻涕一把淚地求你饒他一命(輸出5);揍到四十個板子,他會大小便失禁,勉強(qiáng)哼出聲來(輸出1);揍到五十個板子,他連哼一下都不可能(輸出0)——死 啦!
[衰減系數(shù)是(t-τ)的函數(shù),仔細(xì)品味]
數(shù)學(xué)表達(dá)為:y(t)=∫T(τ)H(t-τ)
——拿人的痛苦來說卷積的事,太殘忍了。除了人以外,其他事物也符合這條規(guī)律嗎?
——呵呵,縣令大人畢竟仁慈。其實(shí)除人之外,很多事情也遵循此道。好好想一想,鐵絲為什么彎曲一次不折,快速彎曲多次卻會輕易折掉呢?
——恩,一時還弄不清,容本官慢慢想來——但有一點(diǎn)是明確地——來人啊,將撒尿的那個無賴抓來,狠打40大板!
也可以這樣理解:
T(τ)即第τ個板子,H(t-τ)就是第τ個板子引起的痛苦到t時刻的痛苦程度,所有板子加起來就是∫T(τ)H(t-τ)
卷積法的原理是根據(jù)線性定常電路的性質(zhì)(齊次性、疊加性、時不變性、積分性等),借助電路的單位沖激響應(yīng)h(t),求解系統(tǒng)響應(yīng)的工具,系統(tǒng)的激勵一般都可以表示為沖擊函數(shù)和激勵的函數(shù)的卷積,而卷積為高等數(shù)學(xué)中的積分概念。建議你去看看定積分的內(nèi)容。
總的說來卷積就是用沖擊函數(shù)表示激勵函數(shù),然后根據(jù)沖擊響應(yīng)求解系統(tǒng)的零狀態(tài)響應(yīng)。
卷積實(shí)質(zhì)上是對信號進(jìn)行濾波。
卷積應(yīng)該就是求和也就是積分,對于線性時不變的系統(tǒng),輸入可以分解成很多強(qiáng)度不同的沖激的和的形式(對于時域就是積分了),那么輸出也就是這些沖激分別作用到系統(tǒng)產(chǎn)生的響應(yīng)的和(或者積分)。所以卷積的物理意義就是表達(dá)了時域中輸入,系統(tǒng)沖激響應(yīng),以及輸出之間的關(guān)系。
卷積是在時域求解LTI系統(tǒng)對任意激勵的零狀態(tài)響應(yīng)的好方法,可以避免直接求解復(fù)雜的微分方程。
從數(shù)學(xué)上來說卷積就是定義兩個函數(shù)的一種乘法。對離散序列來說就是兩個多項式的乘法。物理意義就是沖激響應(yīng)的線性疊加,所謂沖激響應(yīng)可以看作是一個函數(shù),另一個函數(shù)按沖激信號正交展開。
在現(xiàn)實(shí)中,卷積代表的是將一種信號搬移到另一頻率中。比如調(diào)制。這是頻率卷
從數(shù)學(xué)看,卷積是一種反映兩個序列或函數(shù)之間的運(yùn)算方法;
從物理上看,卷積可代表某種系統(tǒng)對某個物理量或輸入的調(diào)制或污染;
從 信號角度來看,卷積代表了線性系統(tǒng)對輸入信號的響應(yīng)方式,其輸出就等于系統(tǒng)沖擊函數(shù)和信號輸入的卷積,只有符合疊加原理的系統(tǒng),才有系統(tǒng)沖擊函數(shù)的概念, 從而卷積成為系統(tǒng)對輸入在數(shù)學(xué)上運(yùn)算的必然形式,沖擊函數(shù)實(shí)際上是該問題的格林函數(shù)解。點(diǎn)激勵源作為強(qiáng)加激勵,求解某個線性問題的解,得到的格林函數(shù)即是 系統(tǒng)沖擊響應(yīng)。所以在線性系統(tǒng)中,系統(tǒng)沖擊響應(yīng)與卷積存在著必然的聯(lián)系。但是卷積本身不過是一個數(shù)學(xué)運(yùn)算方法而已。
我從數(shù)學(xué)的角度分析一下。
信號處理是將一個信號空間映射到另外一個信號空間,通常就是時域到頻域,(還有z域,s域),信號的能量就是函數(shù)的范數(shù)(信號與函數(shù)等同的概念),大家都知 道有個Paserval定理就是說映射前后范數(shù)不變,在數(shù)學(xué)中就叫保范映射,實(shí)際上信號處理中的變換基本都是保范映射,只要Paserval定理成立就是 保范映射(就是能量不變的映射)。
前面說的意思就是信號處理的任務(wù)就是尋找和信號集合對應(yīng)的一個集合,然后在另外一個集合中分析信號,F(xiàn)ourier變換就是一種,它建立了時域中每個信號函數(shù)與頻域中的每個頻譜函數(shù)的一一對應(yīng)關(guān)系,這是元素之間的對應(yīng)。
那么運(yùn)算之間的對應(yīng)呢,在時域的加法對應(yīng)頻域中的加法,這就是FT線性性的體現(xiàn);那么時域的乘法對應(yīng)什么呢,最后得到的那個表達(dá)式我們就把它叫卷積,就是對應(yīng)的頻域的卷積。
簡單來說,卷積是一種重疊關(guān)系,也就是說,所得到的結(jié)果反映了兩個卷積函數(shù)的重疊部分。所以,用一個已知頻段的函數(shù)卷積另一個頻段很寬的函數(shù),也就是對后者進(jìn)行了濾波,后者跟前者重疊的頻段才能很好地通過這個filter.
對于時域可以使用乘法器來實(shí)現(xiàn)乘法運(yùn)算,但是頻域的乘法就可以通過時域的卷積操作來完成。
卷積是一種積分運(yùn)算,用來求兩個曲線重疊區(qū)域面積。可以看作加權(quán)求和,可以用來消除噪聲、特征增強(qiáng)。
卷積我覺得就象一把銼刀,它主要是把一些非光滑的函數(shù)或算子光滑化。
卷積關(guān)系最重要的一種情況,就是在信號與線性系統(tǒng)或數(shù)字信號處理中的卷積定理。利用該定理,可以將時間域或空間域中的卷積運(yùn)算等價為頻率域的相乘運(yùn)算,從而利用FFT等快速算法,實(shí)現(xiàn)有效的計算,節(jié)省運(yùn)算代價。
卷積本身是一種運(yùn)算,但是應(yīng)用到信號上,當(dāng)某個信號通過一個線性系統(tǒng)時,輸出信號就是輸入信號與系統(tǒng)沖擊響應(yīng)的卷積。
卷積是一種線性運(yùn)算,在信號與線性系統(tǒng)的基礎(chǔ)上出現(xiàn)的。
自相關(guān)是指信號在1個時刻的瞬時值與另1個時刻的瞬時值之間的依賴關(guān)系,是對1個隨機(jī)信號的時域描述
卷積的理解——外行(數(shù)學(xué)家)
俺寫了那么“精彩”的數(shù)學(xué)科普沒人看,卻讓不是搞數(shù)學(xué)的人寫的數(shù)學(xué)占了上風(fēng),杯具啊,實(shí)在是杯具。是俺的數(shù)學(xué)水平太高還是你們的數(shù)學(xué)欣賞水平太低?亦或俺寫的太專業(yè)?這回來點(diǎn)不專業(yè)的。
唐老師用輸液過程解釋卷積的確有點(diǎn)意思,比較容易讓人接受,老邪的方法更簡明易懂,不過老邪的方法可以解釋怎么定義卷積,卻不能說明為什么要定義卷積。
如果我沒有記錯,卷積最早來自于信號系統(tǒng)理論,后來被數(shù)學(xué)家們發(fā)揚(yáng)光大了,而且其威力已經(jīng)遠(yuǎn)遠(yuǎn)超出了發(fā)明者的初衷。
先來看信號處理中如何出現(xiàn)卷積的。假設(shè)B是一個系統(tǒng),其t時刻的輸入為x(t),輸出為y(t),系統(tǒng)的響應(yīng)函數(shù)為h(t),按理說,輸出與輸入的關(guān)系應(yīng)該為Y(t)=h(t)x(t),然而,實(shí)際的情況是,系統(tǒng)的輸出不僅與系統(tǒng)在t時刻的響應(yīng)有關(guān),還與它在t時刻之前的響應(yīng)有關(guān),不過系統(tǒng)有個衰減過程,所以t1(<t)時刻的輸入對 輸出的影響通??梢员硎緸閤(t)h(t-t1),這個過程可能是離散的,也可能是連續(xù)的,所以t時刻的輸出應(yīng)該為t時刻之前系統(tǒng)響應(yīng)函數(shù)在各個時刻響應(yīng) 的疊加,這就是卷積,用數(shù)學(xué)公式表示就是y(s)=∫x(t)h(s-t)dt,離散情況下就是級數(shù)了。
我對信號處理一知半解,胡言亂語一番可別揪我的小辮子。我們知道積分變換可以把卷積運(yùn)算變成通常的乘積運(yùn)算,積分變換的物理意義在于通過這種變換可以把時間域上的函數(shù)變成頻率域上的函數(shù),這個過程是可逆的。上述卷積經(jīng)過積分變換后變成了Y(u)=X(u)H(u)。其中Y,X,H分別為y,x,h的積分變換。信號處理中人們關(guān)心的是Y(u),但X(u)與H(u)往往并不那么容易求出來,而x(t)與h(t)是比較容易得到的(真的?),為了找到Y(jié)(u)與y(t)的對應(yīng)關(guān)系從而得到Y(jié)(u),人們發(fā)明了卷積。
信號處理專家們,我說的對嗎?至于卷積在數(shù)學(xué)上的作用,說起來就話長了,容后再表。
卷積與多項式
信號處理中的一個重要運(yùn)算是卷積。初學(xué)卷積的時候,往往是在連續(xù)的情形,
兩個函數(shù)f(x),g(x)的卷積,是∫f(u)g(x-u)du
其實(shí),從離散的情形看卷積,或許更加清楚,對于兩個序列f[n],g[n],一般可以將其卷積定義為s[x]= ∑f[k]g[x-k]
(x*x+3*x+2)(2*x+5)
= (x*x+3*x+2)*2*x+(x*x+3*x+2)*5
= 2*x*x*x+3*2*x*x+2*2*x+ 5*x*x+3*5*x+10
然后合并同類項的系數(shù),
2 x*x*x
3*2+1*5 x*x
2*2+3*5 x
2*5
----------
2*x*x*x+11*x*x+19*x+10
實(shí)際上,從線性代數(shù)可以知道,多項式構(gòu)成一個向量空間,其基底可選為
{1,x,x*x,x*x*x,...}
如此,則任何多項式均可與無窮維空間中的一個坐標(biāo)向量相對應(yīng),
如,(x*x+3*x+2)對應(yīng)于
(1 3 2),
(2*x+5)對應(yīng)于
(2,5)。
線性空間中沒有定義兩個向量間的卷積運(yùn)算,而只有加法,數(shù)乘兩種運(yùn)算,而實(shí)際上,多項式的乘法,就無法在線性空間中說明??梢娋€性空間的理論多么局限了。
但如果按照我們上面對向量卷積的定義來處理坐標(biāo)向量,
(1 3 2)*(2 5)
則有
2 3 1
_ _ 2 5
--------
2
2 3 1
_ 2 5
-----
6+5=11
2 3 1
2 5
-----
4+15 =19
_ 2 3 1
2 5
-------
10
或者說,
(1 3 2)*(2 5)=(2 11 19 10)
回到多項式的表示上來,
(x*x+3*x+2)(2*x+5)= 2*x*x*x+11*x*x+19*x+10
似乎很神奇,結(jié)果跟我們用傳統(tǒng)辦法得到的是完全一樣的。
換句話,多項式相乘,相當(dāng)于系數(shù)向量的卷積.
其實(shí),琢磨一下,道理也很簡單,
卷積運(yùn)算實(shí)際上是分別求 x*x*x ,x*x,x,1的系數(shù),也就是說,他把加法和求和雜合在一起做了。(傳統(tǒng)的辦法是先做乘法,然后在合并同類項的時候才作加法)
以x*x的系數(shù)為例,得到x*x,或者是用x*x乘5,或者是用3x乘2x,也就是
2 3 1
_ 2 5
-----
6+5=11
其實(shí),這正是向量的內(nèi)積.如此則,卷積運(yùn)算,可以看作是一串內(nèi)積運(yùn)算.既然是一串內(nèi)積運(yùn)算,則我們可以試圖用矩陣表示上述過程。
[ 2 3 1 0 0 0]
[ 0 2 3 1 0 0]==A
[ 0 0 2 3 1 0]
[ 0 0 0 2 3 1]
[0 0 2 5 0 0]' == x
b= Ax=[ 2 11 19 10]'
采用行的觀點(diǎn)看Ax,則b的每行都是一個內(nèi)積。
A的每一行都是序列[2 3 1]的一個移動位置。
顯然,在這個特定的背景下,我們知道,卷積滿足交換,結(jié)合等定律,因為,眾所周知的,多項式的乘法滿足交換律,結(jié)合律。在一般情形下,其實(shí)也成立。
在這里,我們發(fā)現(xiàn)多項式,除了構(gòu)成特定的線性空間外,基與基之間還存在某種特殊的聯(lián)系,正是這種聯(lián)系,給予多項式空間以特殊的性質(zhì).
在學(xué)向量的時候,一般都會舉這個例子,甲有三個蘋果,5個橘子,乙有5個蘋果,三個橘子,則共有幾個蘋果,橘子。老師反復(fù)告誡,橘子就是橘子,蘋果就是蘋 果,可不能混在一起。所以有(3,5)+(5,3)=(8,8).是的,橘子和蘋果無論怎么加,都不會出什么問題的,但是,如果考慮橘子乘橘子,或者橘子 乘蘋果,這問題就不大容易說清了。
又如復(fù)數(shù),如果僅僅定義復(fù)數(shù)為數(shù)對(a,b),僅僅在線性空間的層面看待C2,那就未免太簡單了。實(shí)際上,只要加上一條(a,b)*(c,d)=(ac-bd,ad+bc)則情況馬上改觀,復(fù)變函數(shù)的內(nèi)容多么豐富多彩,是眾所周知的。
另外,回想信號處理里面的一條基本定理,頻率域的乘積,相當(dāng)于時域或空域信號的卷積。恰好跟這里的情形完全對等。這后面存在什么樣的隱態(tài)聯(lián)系,需要繼續(xù)參詳。
從這里看,高等的卷積運(yùn)算其實(shí)不過是一種初等的運(yùn)算的抽象而已。中學(xué)學(xué)過的數(shù)學(xué)里面,其實(shí)還蘊(yùn)涵著許多高深的內(nèi)容(比如交換代數(shù))。溫故而知新,斯言不謬。
其實(shí)這道理一點(diǎn)也不復(fù)雜,人類繁衍了多少萬年了,但過去n多年,人們只知道男女媾精,乃能繁衍后代。精子,卵子的發(fā)現(xiàn),生殖機(jī)制的研究,也就是最近多少年的事情。
孔子說,道在人倫日用中,看來我們應(yīng)該多用審視的眼光看待周圍,乃至自身,才能知其然,而知其所以然。
推薦閱讀
國產(chǎn)小眾瀏覽器因屏蔽視頻廣告,被索賠100萬(后續(xù))
年輕人“不講武德”:因看黃片上癮,把網(wǎng)站和786名女主播起訴了
關(guān)于程序員大白
程序員大白是一群哈工大,東北大學(xué),西湖大學(xué)和上海交通大學(xué)的碩士博士運(yùn)營維護(hù)的號,大家樂于分享高質(zhì)量文章,喜歡總結(jié)知識,歡迎關(guān)注[程序員大白],大家一起學(xué)習(xí)進(jìn)步!

