FIR濾波器在信號(hào)處理和通信系統(tǒng)中有著極為廣泛的應(yīng)用,全稱是有限長單位沖擊響應(yīng)濾波器。
FIR濾波器的缺點(diǎn)是運(yùn)算量大,但結(jié)合目前的芯片技術(shù),FPGA自然不必說,可以非常靈活的設(shè)計(jì)很高階次的并行結(jié)構(gòu),ASIC和GPU都是高密度的流水線型DSP處理,對(duì)于FIR所要求的高運(yùn)算能力,自然是不在話下。另一個(gè)缺點(diǎn)在于對(duì)于低頻信號(hào)處理顯得有一些力不從心。
FIR濾波器的優(yōu)點(diǎn)在于階次可以做的很高,并且很容易得到各種各樣期望是的響應(yīng)曲線,很靈活,并且通過調(diào)整窗函數(shù),可以得到很好的濾波效果。
FIR濾波器可以說是和卷積相當(dāng)緊密的聯(lián)系在一起的,可以說FIR是完全依托于卷積的概念而生的一種濾波器。并且由于傅里葉前輩的貢獻(xiàn),我們可以很簡單的用FFT來計(jì)算大長度的FIR,也因此在通信系統(tǒng)的信號(hào)處理中隨處可見FIR的身影。
濾波
想要把一個(gè)知識(shí)點(diǎn)發(fā)散出去,那就得對(duì)它認(rèn)識(shí)的足夠深刻。作為一個(gè)硬件工程師,對(duì)于濾波的概念再熟悉不過了,所謂濾波,就是濾掉不想要的雜波,留下我們想要的信號(hào)。
但是如果我不能給別人講出一點(diǎn)更深層次的東西,也辜負(fù)了別人關(guān)注我一番。從頻域上來講,信號(hào)是一個(gè)矢量,濾波的目的在于只保留這個(gè)矢量的某些分量,而濾掉其他分量,得到其在子空間內(nèi)的投影。
舉個(gè)簡單的例子,一階低通濾波。一階低通濾波是怎么實(shí)現(xiàn)的?在對(duì)輸入信號(hào)做了延時(shí)之后再疊加回去,就得到了濾波之后的結(jié)果。信號(hào)在時(shí)間上的延時(shí)就相當(dāng)于相位上的滯后,參照上圖的頻率響應(yīng)曲線。當(dāng)相位的滯后到了180°時(shí),和原本的信號(hào)做疊加,得到的結(jié)果就是0,于是就被濾掉了。
把一階低通濾波抽象到離散系統(tǒng)中,采用數(shù)字的方式來實(shí)現(xiàn),其數(shù)學(xué)表達(dá)式是Y(n)=a*X(n)+(1-a)*Y(n-1)。這個(gè)結(jié)果在我大三的計(jì)算機(jī)控制課上有過詳細(xì)的推導(dǎo)過程,但我沒記住,自己推了半天也沒推出來,索性就直接放個(gè)結(jié)果吧。可以看到,一階低通濾波的本質(zhì)是把輸入信號(hào)和上一次的輸出信號(hào)做一個(gè)加權(quán),通過調(diào)不同的加權(quán)系數(shù)來調(diào)整濾波器的帶寬。
數(shù)字濾波器可以認(rèn)為是直接用數(shù)學(xué)語言來對(duì)信號(hào)進(jìn)行濾波,所以其使用和實(shí)現(xiàn)上與電路搭建的濾波器有著本質(zhì)的差別。例如上面的一階低通濾波,用程序?qū)崿F(xiàn)的話可以實(shí)現(xiàn)任意的帶寬設(shè)計(jì),而用RC電路實(shí)現(xiàn)就會(huì)嚴(yán)重受限于器件的工藝。所以把濾波器引申到數(shù)字處理之后可以得到這樣的定義:濾波器的本質(zhì)是對(duì)頻率的加權(quán)疊加;和期望的響應(yīng)曲線做相關(guān)。這兩句話想不通也沒有關(guān)系,下面還會(huì)繼續(xù)介紹。
卷積
卷積對(duì)于工程學(xué)來講可以說是大廈的根基一般,往廣義了來講,可以說世界上一切都是卷積的結(jié)果。
上圖是卷積運(yùn)算的一個(gè)示意圖。那么卷積的物理意義是什么?我看到過很多很多的解釋,但回頭來看,這些解釋,懂得人看起來覺得說的沒問題,不懂的人還是看不懂。我這里舉一個(gè)例子來說明什么是卷積:小哪吒很皮,這天偷跑出去,在城里惹了禍,把別人家房子弄塌了,李靖給人賠禮道歉修房子,回到家打了小哪吒一頓,屁股腫了,過了兩天腫消下去了,沒多久又出去惹了禍,抽了敖丙的龍筋,老龍王找上門來,李靖氣的又打了他一頓,屁股又腫了,過了半小時(shí),李靖氣沒消,又打了一頓,老龍王不依不饒,李靖沒辦法又打了一頓,屁股就腫的越來越高。
在這個(gè)例子里,小哪吒屁股腫的程度是最終的輸出結(jié)果,這個(gè)結(jié)果不是由李靖的某一巴掌所單獨(dú)決定的,而是這一天加起來挨的打所共同影響的結(jié)果。從最終的結(jié)果來講,第一巴掌的貢獻(xiàn)是最小的,最后一巴掌的貢獻(xiàn)是最大的。這就是加權(quán)疊加。而一巴掌的結(jié)果,隨著時(shí)間的推移,影響會(huì)逐漸消散,這是一個(gè)一階慣性環(huán)節(jié)的響應(yīng)。整個(gè)過程可以抽象為李靖打在哪吒屁股上的巴掌在經(jīng)過一階慣性環(huán)節(jié)之后,不同的輸入疊加,最終輸出的結(jié)果是哪吒現(xiàn)在屁股腫的程度。僅僅一巴掌,大概半小時(shí)就消下去了,但是由于李靖打的時(shí)間間隔縮小,當(dāng)無窮小時(shí)就是連續(xù)的積分,最終的結(jié)果是得好幾天才能消腫。
所以通俗地講:卷積就是在輸入信號(hào)的每一個(gè)位置(每一巴掌)處疊加一個(gè)單位響應(yīng)(半小時(shí)消腫),把每個(gè)位置得到的結(jié)果疊加就得到了輸出。對(duì)于離散系統(tǒng)來講,卷積的定義是
x(n-k)是依次的n個(gè)輸入,h(k)是每個(gè)輸入所對(duì)應(yīng)的權(quán)值。在濾波的應(yīng)用中,最簡單的就是移動(dòng)平均數(shù)的方式,對(duì)相鄰的幾個(gè)歷史值做平均加權(quán)。這一節(jié)最開始放的示意圖是圖像處理中常用的一種移動(dòng)平均的濾波方式。
見上圖,圖中有很多噪點(diǎn),這些噪點(diǎn)很尖銳,屬于高頻噪聲,將圖像提取出來,做成矩陣之后,就可以采用卷積的概念,把每一個(gè)點(diǎn)的輸出和周圍8個(gè)點(diǎn)做平均,于是得到如下的結(jié)果
FIR濾波器
在理解了卷積的概念之后,F(xiàn)IR濾波器就變得順理成章。把系統(tǒng)響應(yīng)的函數(shù)換成我們所期望的函數(shù),這樣卷積的過程就變成了FIR濾波器。我看到很多地方對(duì)濾波的定義是:用一個(gè)期望的頻率特征函數(shù)H(f)去乘以輸入信號(hào)頻率X(f)。對(duì)于這個(gè)解釋我理解了好久,為什么要用一個(gè)期望的函數(shù)去強(qiáng)行改變輸入頻率?但現(xiàn)在理解了之后,對(duì)這個(gè)解釋稍作修改之后應(yīng)該會(huì)變得容易理解很多:用一個(gè)期望的頻率響應(yīng)去乘以輸入信號(hào),這就是濾波。
上圖是FIR的一個(gè)典型的結(jié)構(gòu),是一個(gè)簡單的四階移動(dòng)平均的FIR濾波器。每次的輸出都是對(duì)4次歷史值的平均。下圖分別是經(jīng)過11階平均和51階平均的效果。
當(dāng)我們把平均值的響應(yīng)函數(shù)換成我們所期望的響應(yīng)函數(shù),這樣就變成了我們想要的濾波器。我們?cè)O(shè)計(jì)濾波器的過程就是選擇FIR中各階輸入的權(quán)重值的過程。
FIR濾波器和FFT
濾波就是用一個(gè)期望的頻率響應(yīng)去乘以輸入信號(hào)的頻率,這個(gè)定義更明確一點(diǎn)來說是在頻域上對(duì)濾波概念的解釋,而在時(shí)域的解釋就是用我們所期望的響應(yīng)函數(shù)h(f)做iFFT之后的時(shí)域函數(shù)H(t)和輸入信號(hào)X(t)做卷積??梢钥吹紽IR濾波器其實(shí)是遵循的濾波在時(shí)域上的定義。
傅里葉前輩不僅給我們指出,所有的信號(hào)都可以被分解為若干正弦波的疊加,同時(shí)還給出了我們時(shí)域頻域相互變換的方法,其中有一條相當(dāng)重要的結(jié)論就是:時(shí)域上的卷積等價(jià)于頻域上的乘積。因此對(duì)于FIR濾波器來講,我們只需要把輸入信號(hào)變換到頻域,再乘以我們期望的響應(yīng)函數(shù),再逆變換到時(shí)域,就得到了濾波后的結(jié)果。
FIR濾波器的設(shè)計(jì)
在有了FFT的工具之后,我們就可以很方便的進(jìn)行FIR濾波器的設(shè)計(jì)。根據(jù)上面的說法,我們只需要給定所期望的特征函數(shù)h(f),就可以得到結(jié)果,再逆變換回時(shí)域,算出不同tap的權(quán)值,就得到了時(shí)域上FIR的濾波器參數(shù)。
FIR濾波器的設(shè)計(jì)一般有窗函數(shù)法、頻率取樣法和優(yōu)選法。窗函數(shù)法由于其簡單直觀,應(yīng)用最多最廣泛。舉例說明窗函數(shù)法的設(shè)計(jì)應(yīng)用。
假設(shè)我們要設(shè)計(jì)一個(gè)低通濾波器,在頻譜上的表示如上圖,F(xiàn)s是采樣率,在第一奈奎斯特區(qū)內(nèi)是低通的特性。所謂窗函數(shù)法就是加一個(gè)濾波器的窗口,如上圖所示,對(duì)于低通的特性,理想效果是一個(gè)矩形窗,低于截止頻率通,高于截止頻率不通。
假設(shè)我們所要設(shè)計(jì)的濾波器為128階,截止頻率是Fc,在頻譜上的表示就是Nc=Fc*(Fs/128),然后得到期望的特征函數(shù)
在頻域上,用這個(gè)特征函數(shù)乘以信號(hào),就得到了輸出的結(jié)果。我們用一個(gè)0Hz~Fs的chirp信號(hào)輸入濾波器來測(cè)試,這個(gè)chirp信號(hào)的頻譜就是一個(gè)矩形,得到的結(jié)果見下圖
可以看到128階FIR濾波器的邊沿還是非常陡的,有很好的濾波性能,但旁瓣的抑制很差,這個(gè)就是FIR濾波器在頻譜上的泄露。泄露是由于FFT只能處理有限時(shí)間長度的時(shí)域信號(hào),如果時(shí)域截取的數(shù)據(jù)不是信號(hào)周期的整數(shù)倍,就會(huì)存在泄露。由于矩形窗的邊沿過于陡,只有很小的概率正好截取到信號(hào)周期的整數(shù)倍,因此泄露很嚴(yán)重??梢酝ㄟ^選擇合適的窗函數(shù),來減少頻譜上發(fā)生的泄露。一般常用的窗函數(shù)有矩形窗、漢寧窗和平頂窗,他們的特征如下圖所示
不同窗函數(shù)所對(duì)應(yīng)的結(jié)果看下圖
關(guān)于窗函數(shù)就不再介紹了,窗函數(shù)的選擇是FIR濾波器設(shè)計(jì)的重點(diǎn),矩形窗的優(yōu)點(diǎn)在于計(jì)算量小,其他的窗函數(shù)基本都是基于升余弦函數(shù),漢寧窗屬于升余弦函數(shù)的一個(gè)特例。有興趣的大家自己可以去研究研究。
最后要說的一點(diǎn)是,F(xiàn)IR濾波器的階數(shù)越高,則邊沿越陡,運(yùn)算量越大。
-
低通濾波器
+關(guān)注
關(guān)注
14文章
474瀏覽量
47424 -
通信系統(tǒng)
+關(guān)注
關(guān)注
6文章
1193瀏覽量
53352 -
信號(hào)處理器
+關(guān)注
關(guān)注
1文章
254瀏覽量
25280 -
RC電路
+關(guān)注
關(guān)注
2文章
162瀏覽量
30267 -
fir濾波器
+關(guān)注
關(guān)注
1文章
95瀏覽量
19044
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論