張書玉,王 婷
(南京林業大學 信息科學技術學院,江蘇 南京 210037)
數字濾波器從單位脈沖響應長度上可以分成兩類:有限長沖激響應數字濾波器和無限長沖激響應(Iinite Impulse Response)數字濾波器[1-2]。因為FIR數字濾波器沒有反饋,輸出僅取決于之前和當前的輸入值,始終具有線性相位響應,所以FIR數字濾波器更穩定和易于實現,因此本文只針對FIR數字濾波器做詳細討論。FIR數字濾波器常用的傳統設計方法有窗函數法、頻率抽樣設計法和切比雪夫等波紋逼近法等[3-4]。其中,窗函數法和頻率采樣法都存在通帶和阻帶邊界頻率不易控制、通帶波動大和收斂精度低等缺點,因此在實際應用中存在局限性。
數字濾波器的設計和實現中如何克服上述缺陷是個技術難題[5]。鑒于數字濾波器可以通過修改一些預定義的幅度或頻率響應來重塑或操縱信號的頻譜,因此通過研究和分析將數字濾波器的設計問題轉換為多參數優化的問題。由于智能算法在解決許多復雜的、高維的和非線性問題上表現出出色的優化性能,其作為傳統數學方法的替代方法可以應用于需要獲得全局或近似全局最優解的場合。在數字濾波器的設計上很多智能算法已被應用[6],例如遺傳算法[7]、粒子群算法[8]、差分進化[9]、人工蜂群算法[10]、免疫算法等[11]以及上述算法的混合。這些算法通過定義各種誤差函數來尋求滿足設計要求的一組濾波器系數,使設計的濾波器的幅頻響應與理想濾波器的幅頻響應在通帶和阻帶的誤差最小。然而,智能算法在設計數字濾波器時同樣面臨許多挑戰,例如算法可能收斂到局部最優解等。隨著研究的逐漸深入,每個算法的性能在慢慢改善,并且用來設計數字濾波器的新算法在不斷涌現。
FIR數字濾波器的系統函數為:

其中h(n)是單位脈沖響應,N是濾波器階數。
h(n)需要在設計過程中確定其值,它有奇、偶對稱兩種情況,加上N取值為奇偶兩種可能,則線性相位FIR濾波器幅度函數H(ω)有四種情況。為了便于分析,以第一種情況為例。
第一種情況:h(n)=h(N-1-n),即h(n)關于(N-1)/2偶對稱且N為奇數。此時幅度函數可寫成:

其中:

理想的幅度函數向量記為Hd(ω),定義誤差向量為:

可以看出,線性相位FIR數字濾波器的設計問題即如何求解系數a(n)使得各種誤差函數達到最小,從而實現低通、高通、帶通和帶阻等不同類型的濾波器。
常見的誤差函數有如下幾種:
(1)加權逼近誤差函數:

(2)平方誤差函數:

(3)最小化誤差函數:

其中G(ω)是用于不同頻帶中的加權函數,δp、δs分別為通帶和阻帶波紋。
傳統窗函數設計方法從時域角度出發,把無限長的脈沖響應hd(n)用有限長的窗函數序列w(n)截取成有限長的脈沖響應h(n):

窗的點數N及窗的形狀是窗函數法中兩個極重要的參數。該方法的主要缺點是在頻域導致吉布斯效應,因而在具體設計中,通帶、阻帶波紋的改善通常以加寬過渡帶為代價。
頻率抽樣設計法從頻域的角度出發,只是簡單地對給定的理想頻率響應等間隔采樣,然后通過離散傅里葉反變換獲得相應的脈沖響應。頻率采樣法僅在采樣點處獲得所需的頻率響應,在其他點仍然存在誤差;可以控制阻帶衰減,但通帶波紋不易控制。
還有一些較經典的設計方法,例如雷米茲算法可以自由選擇濾波器的階數、通帶、阻帶以及誤差加權函數,但是其計算較復雜。此外加權最小二乘也是比較流行的算法之一,但求解過程中需計算矩陣的逆,在求解高階矩陣時,逆矩陣求解困難。大多數FIR濾波器的設計方法都只能獲得理想濾波器的近似解,隨著濾波器階數的增加,傳統方法設計數字濾波器就會更加困難。
作為啟發式算法的經典算法之一,遺傳算法(Genetic Algorithms,GA)的核心在于通過變化和選擇來逐步提高一組候選解決方案的質量。在數字濾波器設計領域,遺傳算法得到了廣泛的關注和研究。自SUCKLEY D[12]首次提出用遺傳算法設計數字濾波器以來,已經有超過一百多種使用GA來設計的方案。
SRIRANGANATHAN S[13]1995年提出使用遺傳算法來降低數字濾波器復雜度,采用加權逼近誤差,使通帶和阻帶的加權波紋值極小,將此方法和模擬退火方法相比,結果表明遺傳算法計算量小。文獻[14]用遺傳算法設計時分別采用平方誤差和加權逼近誤差函數,結果表明加權逼近誤差函數比平方誤差得到的濾波器系數更優。TZENG S T[15]使用一種具有加權功能新的遺傳算法,該方法基于迭代復數遺傳算法并且用先前的迭代結果來更新每次迭代時的加權函數,通過設計單通帶濾波器和復雜的全通濾波器驗證算法的有效性。CEN L[16]通過整合自適應遺傳算法,模擬退火算法和禁忌搜索算法的主要特征,提出一種混合遺傳算法,結果可以大大降低濾波器的歸一化峰值波紋的值。文獻[17]提出一種將遺傳算法與局部優化方法相結合的新型混合遺傳算法,根據粒子的多樣性來減少搜索空間,并有助于GA擺脫局部最優,從而防止過早收斂,但是需要更多的計算。孫田雨[18]提出通過改進遺傳算法的變異交叉的概率和算子兩個方面來改善早熟收斂的問題,并且通過實例驗證了改進算法的可行性。遺傳算法不僅能設計一維數字濾波器,在二維數字濾波器設計上也得到了研究,文獻[19]引入穩定性約束條件作為二維數字濾波器的設計標準,通過使用遺傳算法來設計二維的數字濾波器,結果能保證濾波器的穩定性。
通常,遺傳算法執行時需要交叉和變異算子,由于設置的參數多,用于評估單個功能的執行時間可以長達數分鐘或數小時,而使用傳統方法時,執行時間不到幾秒。計算時間成為制約GA應用的關鍵瓶頸。實際上,遺傳算法應用于特定問題中主要有兩個主要缺陷:(1)收斂速度慢;(2)當算法有時找到局部最優解時過早收斂。混合算法可以克服這些問題,但又在計算上增加了難度,迭代過程更加復雜。
為了克服遺傳算法在數值優化問題中的缺點,文獻[20]引入了進化算法,進化算法的步驟與遺傳算法基本一致,主要包括交叉,變異和選擇,其優點主要有:(1)僅使用很少的幾個控制參數;(2)收斂速度快;(3)無論初始值如何都能找到搜索空間的最小值。文獻[21]中分別就進化算法和遺傳算法同時利用均方誤差函數設計FIR濾波器進行性能比較,結果顯示在同樣迭代次數下,進化算法大約五六秒就能設計出最佳濾波器,而遺傳算法大約70 s,另外進化算法求解的誤差函數的結果性能更好。進化算法在文獻[22]中與粒子群算法混合用于濾波器的設計,混合優化技術有助于避免粒子陷入局部最小值,并且研究和試驗了兩種不同的誤差函數,結果顯示可以實現較小的波紋但需要較大的過渡寬度。文獻[23]采用混合螢火蟲差分進化算法,結合差分進化和螢火蟲技術的優勢,通過螢火蟲運動增強了差分進化的全局搜索能力。文獻[24]中將進化算法與小波突變一起用于設計FIR低通、高通、帶通和帶阻濾波器,結果顯示盡管在通帶和阻帶的波動較小,但是過渡帶寬仍然需要改進。在大多數的啟發式算法中,搜索過程本質上是隨機并且具有不確定性,這些算法及其改進版本利用它們先前迭代的信息來確定全局最優解,進化算法在其中表現出更快收斂到全局最優解的能力,使其得到廣泛的應用[25-31]。
粒子群算法是一種基于社會心理學原理的種群隨機優化算法,能夠處理多目標函數優化問題。與遺傳和進化算法不同,粒子群算法設計數字濾波器設置的參數更少、收斂速度快、計算量小、搜索能力強且結構簡單易實現。早期的粒子群算法收斂速度快,可能導致在收斂過程中錯過最優解,也可能出現粒子趨同的現象,導致粒子的多樣性減少,使算法優化到一定程度無法繼續。隨后研究人員從以下幾個方面對算法進行改進:(1)由于算法要設置的參數較少,因此參數的改進大多針對慣性權重和學習因子;(2)將粒子群算法與多種算法(比如進化、遺傳等算法)混合使用來優化設計數字濾波器,使其取長補短達到更好的優化效果。
1.5.1 慣性權重的改進
粒子群算法最初由Kennedy等提出,SHI Y等[32]在粒子群算法中添加新的慣性權重,從而控制粒子的收斂速度,更新后的方程如下:

研究表明,慣性權重的調整對粒子群算法的性能有影響。慣性權重通過先前粒子的速度控制當前粒子的速度,從而調節粒子在全局搜索和局部搜索之間的矛盾。較大的慣性權重有利于加強全局搜索能力,而較小的慣性權重則有利于局部搜索,所以如何平衡兩者之間的關系也是改進的難點之一。Pavani等將這種改進的算法與早期的粒子群算法,窗函數法以及頻率采樣法等,從通帶、阻帶增益以及執行時間等方面進行比較,都在一定程度上顯示了引入慣性權重對于粒子群算法設計數字濾波器性能提升上的優勢。
最初針對慣性權重的改進只是將其設為一個常數,為了進一步平衡局部搜索能力和全局搜索能力并跳出局部最優解,SHI Y等將w線性表示為:

其中,wmax是慣性權重的最大值,wmin是最小值,t為當前迭代次數,T為總體迭代次數。除此之外,陳貴敏等[33]提出其他三種改進慣性權重的策略:

實際測試中第三種策略的收斂精度和收斂速度均優于其他兩個。
改進慣性權重的相關研究包括:HUANG W P等[34]利用式(9)慣性權重粒子群算法代替頻率采樣法濾波器的設計,獲得了最大阻帶衰減,但是標準的粒子群算法容易陷入局部最優。李輝等[35]使用式(9)改進的粒子群算法優化數字濾波器參數過程中發現初始值的選取僅影響收斂速度。周飛紅等[36]比較了慣性粒子群算法和Parks-McClellan(PM)兩種方法設計高通數字濾波器,結果表明前者設計的數字濾波器阻帶衰減更大,通帶波動更小。
1.5.2 學習因子的改進
在早期的粒子群算法中將學習因子c1、c2設為常數,使得粒子自身認知能力和全局認知能力達到平衡,但是按照經驗設計的常數學習因子濾波器的幅頻響應與理想的頻率響應有很大的誤差。因此,也有學者在學習因子的改進上做了些研究工作。Clerc引入壓縮因子來限制學習因子,另外還有學習因子同步變化、學習因子異步變化和三角函數學習因子法,以及慣性權值的學習因子的改進等,這些方法一定程度上提高了濾波器的設計性能。
1.5.3 粒子群算法的其他改進策略
傳統粒子群算法的問題在于過早收斂和不穩定,已經有很多種克服了以上兩種缺點的改進粒子群算法應用于FIR濾波器的設計中,其中包括反向學習(OPSO)粒子群算法、瘋狂PSO(CRPSO)、混合算法(DEPSO)和混沌粒子群(CPSO)等。JEHAD I A等[37]使用粒子群算法和遺傳算法設計了FIR數字濾波器,PSO參數設計比GA所需參數更為簡單直觀,此外文中的兩個設計案例都顯示粒子群算法可成功實現優化目標,而且收斂性優于遺傳算法。SUN J等[38-39]根據粒子群的量子行為,提出新的量子粒子群算法模型,其全局搜索能力遠遠高于標準的粒子群算法。呂國等[40]將量子粒子群算法應用于數字濾波器設計中并且與標準粒子群算法比較,結果表明運算量相對減少,通帶變寬,幅頻響應更接近理想特性。梁慧等[41]將混沌搜索策略與粒子群優化算法相結合設計高通數字濾波器,與PM設計方法相比較,結果顯示前者設計的濾波器通帶波動小,阻帶衰減大,收斂速度快。ZHAO Z等[42]分別將混沌粒子群算法與原始的粒子群算法和量子粒子群算法用于設計數字濾波器并分析對比,發現混沌粒子群算法能夠以更少的時間收斂到全局最優。KAR R等[43]提出用基于瘋狂度的粒子群算法優化設計數字濾波器,引入瘋狂算子,確保粒子的多樣性,改善易陷于局部最小值的問題。趙安新等[44]用綜合學習粒子群算法改進頻率采樣法設計數字濾波器,節約了粒子在錯誤方向上花費的時間,解決粒子群算法易于陷入局部最優點的問題。KUMAR P U[45]等將PSO與傳統算法相比,不僅改善阻帶的衰減,而且利用了在不連續點附近對樣本值進行插值,從而減少誤差。AGGARWAL A[46]等研究了布谷鳥搜索算法、粒子群算法和遺傳算法設計數字濾波器的性能對比,結果顯示粒子群算法設計的結果在收斂速度,執行時間和幅度響應誤差精度等方面都略遜于布谷鳥搜索算法,說明粒子群算法在設計數字濾波器的參數設計上還有待改進。SHAO P[47]等將基于折射相反學習模型改進的粒子群優化算法用于設計具有線性相位的FIR低通和高通數字濾波器,結果表明此方法設計數字濾波器的性能優于其他算法,此方法可以獲得更快的收斂速度和更好的精度。
以上基于智能算法設計濾波器的性能基本集中在通帶和阻帶波紋,表1從濾波器的階數(Order)、最大阻帶衰減(Maximum stop band attenuation)、最大通帶波紋(Maximum pass band ripple)、最大阻帶波紋(Maximum stop band ripple)和過渡帶寬(Transition Width)五個方面對多種設計算法進行分析對比,結果顯示改進后的粒子群算法、進化算法在通帶衰減和阻帶波紋方面都顯示其優越性。

表1 多種算法設計FIR濾波器參數比較
本文對FIR數字濾波器設計常用的幾種典型啟發式優化算法進行綜述。將濾波器的設計問題轉化為多參數優化,通過使用不同的優化技術讓誤差函數最小,從而確定濾波器系數。上文就經典方法和智能算法分開進行闡述,發現了智能算法在設計時間和準確度等方面比傳統的設計技術更優越。
對于復雜的優化問題使用遺傳算法、粒子群算法和差分進化等智能算法求解,由于智能算法求解是隨機搜索的過程,可能使得每一次的運行結果,收斂曲線都有一定的不同,在數字濾波器的設計過程中一般認為幅頻響應或單位脈沖響應收斂于一個固定值時,該固定值就是此次運算的最優解,所以判斷哪一次運行結果是最優值,參考文獻中提出大概兩種方法:(1)多運行幾次對比;(2)統計計算的每次結果分析平均值或方差等進行判斷。另外誤差函數是個很好的性能指標判斷條件,但是也不是適用于所有濾波器的通用標準。
幾種經典算法中,雖然遺傳算法使用率最高,但是從文章的分析可以看出,遺傳算法由于設計濾波器時參數比粒子群算法和差分進化算法都相對復雜,所以如何降低計算復雜度,同時又能保證濾波器性能是繼續努力的方向。雖然采用粒子群算法和差分進化算法設計數字濾波器一直表現出良好的效果,但是實際應用方面距離理論設計還是有一定的差距,所以實際應用緊跟理論研究也是今后繼續努力的方向。