www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > > FPGA開源工作室


1.數(shù)字信號處理原理

線性系統(tǒng)中,信號只能以乘以一個常數(shù)之后再相加的方式進(jìn)行組合。例如,一個信號不能直接乘以另外一個信號。如下圖所示,根據(jù)給出三個信號:x0[n],x1[n],x2[n]相加得到最終的信號x[n]。通過相乘和相加的形式進(jìn)行信號的組合被稱為信號的合成。

與信號合成相反的步驟,叫做信號的分解。即把原始信號分解為兩個或多個信號相加。信號的分解要比信號合成要復(fù)雜些。試想,假設(shè)我們把15和25相加,那么我們只能得到40,;相反,如果我們把40分解成兩個或多個數(shù)字的相加,那么這種分解會有無數(shù)種形式,比如1+39,2+38,-30.5+60+10.5。


圖1

數(shù)字信號處理中,最為關(guān)鍵的步驟是信號的疊加。假設(shè)有如下圖的輸入信號x[n],經(jīng)過一個線性系統(tǒng)之后,輸出信號為y[n]。輸入信號可以分解為多個更為簡單的信號:x1[n],x2[n],x3[n],這些被稱為輸入信號分量。之后把各個輸入信號分量單獨(dú)的輸入到線性系統(tǒng)中,產(chǎn)生與之對應(yīng)的輸出信號分量:y1[n],y2[n],y3[n]。原始的輸入信號經(jīng)過線性系統(tǒng)之后,得到的輸出信號y[n]即為各個輸出信號分量的合成。線性系統(tǒng)中,通過這種方式獲得的輸出信號和原始信號直接通過系統(tǒng)得到的輸出結(jié)果是一樣的。正因?yàn)槿绱?,任何?fù)雜的數(shù)字信號,我們應(yīng)該把它分解為更為簡單的輸入信號分量,經(jīng)過線性系統(tǒng)后把輸出信號分量進(jìn)行合成即為最終的輸出信號。但是,如果分解的輸入信號不夠簡單,那么這樣與分解之前的效果是一樣的,需要復(fù)雜的計算。

假設(shè)你需要計算2014乘以4的結(jié)果,我們可以這樣進(jìn)行計算:把2014分解為2000+10+4,分解的系數(shù)分別乘以4再相加即為最終的輸出結(jié)果。這種方法比直接把兩個數(shù)相乘要簡單得多。



圖2

2.卷積

脈沖分解

脈沖分解是卷積的基礎(chǔ)。如下圖所示,N個采樣信號經(jīng)過脈沖分解之后,形成N個信號分量,每個信號分量只包含原始信號的某一個采樣點(diǎn)信號,而其他采樣點(diǎn)的值為0。假若某個信號只有一個非零點(diǎn),其他各點(diǎn)數(shù)值均為0,那么這個信號被稱為脈沖信號。


圖3

脈沖函數(shù)

Delta函數(shù)用希臘字母表示為o[n]。delta 函數(shù)是一個歸一化的脈沖信號,即在采樣點(diǎn)零點(diǎn)位置其值為1,其他采樣點(diǎn)位置各點(diǎn)數(shù)值均為0。

脈沖反應(yīng)

當(dāng)線性系統(tǒng)中輸入信號為delta函數(shù)時,其輸出的信號稱為脈沖反應(yīng)。如下圖所示。如果兩個不同的線性系統(tǒng),當(dāng)輸入信號均為delta函數(shù)時,其輸出分脈沖反應(yīng)也是不同的。就像離散數(shù)字信號中,用x[n]、y[n]分別表示輸入信號和輸出信號,脈沖反應(yīng)使用h[n]表示。當(dāng)然,你也可以使用其他的符號表示,比如f[n]等。

任何脈沖信號都可以看作是脈沖函數(shù)的平移和縮放。例如,假設(shè)信號a[n]只在采樣點(diǎn)8的位置有輸入,且其輸入值為-3,這就相當(dāng)于把delta函數(shù)平移到8的位置,在乘以-3.用公式表示為:a[n] = -3 o[n-8]。假如delta函數(shù)的脈沖反應(yīng)為h[n],那么a[n]的脈沖反應(yīng)為-3h[n-8]。

卷積就像數(shù)學(xué)的加減乘除一樣,是一種形式化的數(shù)學(xué)運(yùn)算。數(shù)學(xué)運(yùn)算中輸入兩個數(shù)得到第三個數(shù),卷積則是輸入兩個信號產(chǎn)生第三個信號。卷積被廣泛應(yīng)用于統(tǒng)計和概率中。在線性系統(tǒng)中,卷積描述的是輸入信號,脈沖反應(yīng)和輸出信號三者之間的關(guān)系。



圖4

上圖描述的是卷積應(yīng)用于線性系統(tǒng)的示意圖。輸入信號x[n]進(jìn)入有脈沖反應(yīng)h[n]的線性系統(tǒng),產(chǎn)生輸出信號y[n]。用公式表示為:x[n]*h[n] = y[n]。

3.卷積運(yùn)算

卷積可以從輸入信號的角度理解:輸入信號的每一個采樣點(diǎn)是如何貢獻(xiàn)于多個輸出信號采樣點(diǎn),即每一個輸入信號分量進(jìn)入線性系統(tǒng)之后,都將產(chǎn)生多個平移和縮放版本的脈沖反應(yīng),輸出結(jié)果即為每個信號分量對應(yīng)的平移和縮放版的脈沖反應(yīng)進(jìn)行合成;從輸出信號的角度理解:每一個輸出信號的采樣點(diǎn)是如何從眾多輸入信號采樣點(diǎn)獲取信息。即對于每一個輸出信號,都將由多個輸入信號貢獻(xiàn)其脈沖響應(yīng),輸出結(jié)果即為對應(yīng)脈沖響應(yīng)的線性加權(quán)。

這兩個理解只是對卷積運(yùn)算的不同角度的理解,其結(jié)果都是一樣的。

從輸入信號的角度理解


圖5

上圖是一個簡單的卷積計算。輸入信號x[n]有九個點(diǎn),輸入一個有四個脈沖反應(yīng)h[n]的線性系統(tǒng)中,得到9+4-1輸出信號y[n]。用數(shù)學(xué)術(shù)語表示為:x[n]卷積h[n]輸出結(jié)果y[n]。以第一種角度理解卷積:分解輸入信號,把輸入信號分量通過線性系統(tǒng),然后把每一個輸出分量進(jìn)行合成。在這個例子中,輸入信號的每一個采樣點(diǎn)都將產(chǎn)生一個平移和縮放版的脈沖反應(yīng),輸出信號即把這些平移和縮放版的脈沖反應(yīng)疊加生成最終的輸出信號y[n]。其具體的計算過程如下圖所示:


圖6

圖6:輸入信號中的每一個分量都將產(chǎn)生一個平移和縮放版的脈沖反應(yīng)。即用方形所表示的脈沖反應(yīng)結(jié)果。除了方形之外的所有點(diǎn)起數(shù)值均為0.

假設(shè)我們從輸入信號的第四個采樣點(diǎn)x[4]開始。這個采樣點(diǎn)的下標(biāo)為4,其值為1.4。當(dāng)輸入信號分解之后,這個采樣點(diǎn)可以用脈沖函數(shù)表示為:1.4 o[n-4]。經(jīng)過線性系統(tǒng)之后,該采樣點(diǎn)所對應(yīng)的輸出信號分量為1.4h[n-4]。如上圖中間位置圖像所示。注意到輸出信號分量脈沖反應(yīng)乘以1.4,并把采樣點(diǎn)右移到下表為四的采樣點(diǎn)。0-3,8-11各點(diǎn)數(shù)值均為0.

上圖中方塊形狀表示的即為平移和縮放的脈沖反應(yīng)數(shù)值,鉆石形狀的點(diǎn)其值為0.

當(dāng)輸入信號是四個采樣,經(jīng)過有九個點(diǎn)的脈沖反應(yīng)線性系統(tǒng),其輸出的結(jié)果與上圖所示的方法結(jié)果相同。



圖7


圖8

上述兩種計算方法結(jié)果相同,揭示了卷積的一個重要性質(zhì):卷積的交換律。即a[n]*b[n]=b[n]*a[n]。即卷積并不關(guān)心哪個信號是輸入信號哪個信號是脈沖反應(yīng)。

假設(shè)輸入信號為{1,2,3,4,1,2,3,4,5};脈沖反應(yīng)為:{2,3,1,4};則卷積計算過程相當(dāng)于如下所示,每一個輸入信號分量分解為單個脈沖函數(shù),經(jīng)過四個點(diǎn)的h[n]線性系統(tǒng)之后,其輸出結(jié)果即為h[n]+2*h[n-1]+3*h[n-2]+4*h[n-3]+ h[n-4]+2*h[n-1-5]+3*h[n-6]+4*h[n-7]+5h[n-8]。


圖9


圖10

從輸入信號角度理解卷積代碼示例:

#include#include#include int main(){ int InputSignal[9] = {1,2,3,4,1,2,3,4,5}; int ImpulseCorres[4] = {2,3,1,4}; int OutPut[12] = {0}; int i,j;  //input view for(i = 0;i < 9;i++) { for(j = 0;j < 4;j++) OutPut[i+j] = OutPut[i+j]+InputSignal[i]*ImpulseCorres[j]; }  for(i = 0;i < 12;i++) { printf("%d ",OutPut[i]); }  return 0;}


從輸出信號的角度理解

從輸出信號角度理解卷積,分析的是每一個輸入信號的采樣點(diǎn)是如何影響眾多輸出信號的采樣點(diǎn)。而從輸出角度理解卷積,分析的是輸出信號的每一個采樣點(diǎn)是由哪些輸入信號影響的。這種方式對數(shù)學(xué)角度和實(shí)踐應(yīng)用角度理解卷積都相當(dāng)有作用。用公式表示即為:y[n]=其他變量的組合。換句話說,輸出信號采樣點(diǎn)n等于眾多輸入信號和脈沖反應(yīng)的線性組合。

從如圖6可以看出,單個輸出信號是如何受到眾多輸入型號的影響的。假設(shè)我們以y[6]為例,在圖6中找到在n=6的位置,九個輸入信號中有哪些數(shù)值為非零的采樣點(diǎn)作用于該位置。由圖可以看出五個輸入信號在n = 6的位置其數(shù)值為0,只有四格輸入信號作用于n = 6的時候其數(shù)值不為零。分別是x[3],x[4],x[5],x[6]。y[6]的最終結(jié)果即為這四個輸入信號作用單獨(dú)作用于線性系統(tǒng)的后輸出信號分量之和。即y[6] = x[3]*h[3]+x[4]*h[2]+x[5]*h[1]+x[6]*h[0]。

圖11,從輸出信號角度理解卷積,其相當(dāng)于一個卷積機(jī)器。如圖所示,假設(shè)輸入信號x[n],輸出信號y[n], 虛線方框里表示的是卷積機(jī)器,可以從左到右從右到左自由移動。卷積機(jī)器放置的位置應(yīng)該與我們需要求得輸出信號采樣點(diǎn)對其,輸入信號的四個采樣點(diǎn)進(jìn)入到卷積機(jī)器,四個采樣點(diǎn)的數(shù)字分別于其對應(yīng)的脈沖反應(yīng)相乘,再把其乘積相加。例如為了計算y[6],需要把x[3],x[4],x[5],x[6]四個輸入信號輸送到卷積機(jī)器。相應(yīng)的,為了計算y[7],卷積機(jī)器必須右移一位到采樣點(diǎn)7的位置,這樣,進(jìn)入到卷積的四個信號分別是x[4],x[5],x[6], x[7],如此循環(huán)直到所有輸出信號分量被計算完成。

圖11

卷積機(jī)器中脈沖反應(yīng)排列順序是相當(dāng)重要的。卷積機(jī)器中的脈沖反應(yīng)與原始的脈沖反應(yīng)做了一個鏡像的翻轉(zhuǎn)。為什么需要翻轉(zhuǎn)呢?

即假設(shè)我們計算y[4]的輸出結(jié)果,由上圖可知y[4] = x[4]*h[0]+x[3]*h[1]+x[2]*h[2]+x[1]*h[3]+x[0]*h[4]。即當(dāng)前輸入信號點(diǎn)輸入到線性系統(tǒng)對應(yīng)的輸出結(jié)果是當(dāng)前信號和之前各個信號對當(dāng)前點(diǎn)的脈沖反應(yīng)的一個線性加權(quán)。如公式所述,為了計算y[4]的結(jié)果,我們必須把輸入x[0],x[1],x[2],x[3],x[4]作用在n = 4的位置的脈沖響應(yīng)進(jìn)行線性加權(quán)。也就是說,當(dāng)x[0]進(jìn)入系統(tǒng)的時候,在n = 4的位置對應(yīng)的脈沖反應(yīng)為h[4],其輸出為x[0]*h[4],當(dāng)x[1]進(jìn)入系統(tǒng)后,在n = 4的位置對應(yīng)的脈沖反應(yīng)為h[3],其輸出結(jié)果為x[1]*h[3]以此類推。由此可以看出,輸出信號的每一個分量都是有收到輸入信號影響的權(quán)重線性組合,其權(quán)重恰好是脈沖反應(yīng)的鏡像翻轉(zhuǎn)對應(yīng)的權(quán)重值。這也就是為什么卷積公式中需要把輸入信號進(jìn)行翻轉(zhuǎn)在進(jìn)行線性疊加的原因。

假設(shè)有N個點(diǎn)的輸入信號x[n],采樣點(diǎn)從0-N-1,有M個點(diǎn),脈沖反應(yīng)為h[n]的線性系統(tǒng),信號點(diǎn)從0-M-1。則這兩個信號的卷積將輸出有N+M-1個采樣點(diǎn)的信號,下標(biāo)從0-N+M-2。用公式表示為:

從輸出信號角度理解卷積代碼示例:

#include#include#include int main(){ int InputSignal[9] = {1,2,3,4,1,2,3,4,5}; int ImpulseCorres[4] = {2,3,1,4}; int OutPut[12] = {0}; int i,j;  //output view for(i = 0;i < 12;i++) { OutPut[i] = 0; for(j = 0; j < 4;j++) { if((i-j)<0) continue; if((i-j)>8) continue; OutPut[i] += ImpulseCorres[j]*InputSignal[i-j]; } }  for(i = 0;i < 12;i++) { printf("%d ",OutPut[i]); } return 0; }


4.圖像中的卷積

假設(shè)二維函數(shù)I和H,對應(yīng)的卷積操作可以表示為:

也可以表示為:

應(yīng)用于圖像領(lǐng)域時,其卷積公式也可以表示為:



當(dāng)濾波函數(shù)H*(I,j) = H(-I,-j)進(jìn),H(I,j)進(jìn)行了180度旋轉(zhuǎn)之后,其結(jié)果與線性濾波時一樣的。


圖像中的線性濾波可以表示為:

其原理為:


由兩者的公式可以看出,線性濾波其實(shí)是把濾波函數(shù)進(jìn)行180度旋轉(zhuǎn)之后進(jìn)行卷積的結(jié)果。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
關(guān)閉