張書玉,王 婷
(南京林業(yè)大學(xué) 信息科學(xué)技術(shù)學(xué)院,江蘇 南京 210037)
數(shù)字濾波器從單位脈沖響應(yīng)長(zhǎng)度上可以分成兩類:有限長(zhǎng)沖激響應(yīng)數(shù)字濾波器和無限長(zhǎng)沖激響應(yīng)(Iinite Impulse Response)數(shù)字濾波器[1-2]。因?yàn)镕IR數(shù)字濾波器沒有反饋,輸出僅取決于之前和當(dāng)前的輸入值,始終具有線性相位響應(yīng),所以FIR數(shù)字濾波器更穩(wěn)定和易于實(shí)現(xiàn),因此本文只針對(duì)FIR數(shù)字濾波器做詳細(xì)討論。FIR數(shù)字濾波器常用的傳統(tǒng)設(shè)計(jì)方法有窗函數(shù)法、頻率抽樣設(shè)計(jì)法和切比雪夫等波紋逼近法等[3-4]。其中,窗函數(shù)法和頻率采樣法都存在通帶和阻帶邊界頻率不易控制、通帶波動(dòng)大和收斂精度低等缺點(diǎn),因此在實(shí)際應(yīng)用中存在局限性。
數(shù)字濾波器的設(shè)計(jì)和實(shí)現(xiàn)中如何克服上述缺陷是個(gè)技術(shù)難題[5]。鑒于數(shù)字濾波器可以通過修改一些預(yù)定義的幅度或頻率響應(yīng)來重塑或操縱信號(hào)的頻譜,因此通過研究和分析將數(shù)字濾波器的設(shè)計(jì)問題轉(zhuǎn)換為多參數(shù)優(yōu)化的問題。由于智能算法在解決許多復(fù)雜的、高維的和非線性問題上表現(xiàn)出出色的優(yōu)化性能,其作為傳統(tǒng)數(shù)學(xué)方法的替代方法可以應(yīng)用于需要獲得全局或近似全局最優(yōu)解的場(chǎng)合。在數(shù)字濾波器的設(shè)計(jì)上很多智能算法已被應(yīng)用[6],例如遺傳算法[7]、粒子群算法[8]、差分進(jìn)化[9]、人工蜂群算法[10]、免疫算法等[11]以及上述算法的混合。這些算法通過定義各種誤差函數(shù)來尋求滿足設(shè)計(jì)要求的一組濾波器系數(shù),使設(shè)計(jì)的濾波器的幅頻響應(yīng)與理想濾波器的幅頻響應(yīng)在通帶和阻帶的誤差最小。然而,智能算法在設(shè)計(jì)數(shù)字濾波器時(shí)同樣面臨許多挑戰(zhàn),例如算法可能收斂到局部最優(yōu)解等。隨著研究的逐漸深入,每個(gè)算法的性能在慢慢改善,并且用來設(shè)計(jì)數(shù)字濾波器的新算法在不斷涌現(xiàn)。
FIR數(shù)字濾波器的系統(tǒng)函數(shù)為:
其中h(n)是單位脈沖響應(yīng),N是濾波器階數(shù)。
h(n)需要在設(shè)計(jì)過程中確定其值,它有奇、偶對(duì)稱兩種情況,加上N取值為奇偶兩種可能,則線性相位FIR濾波器幅度函數(shù)H(ω)有四種情況。為了便于分析,以第一種情況為例。
第一種情況:h(n)=h(N-1-n),即h(n)關(guān)于(N-1)/2偶對(duì)稱且N為奇數(shù)。此時(shí)幅度函數(shù)可寫成:
其中:
理想的幅度函數(shù)向量記為Hd(ω),定義誤差向量為:
可以看出,線性相位FIR數(shù)字濾波器的設(shè)計(jì)問題即如何求解系數(shù)a(n)使得各種誤差函數(shù)達(dá)到最小,從而實(shí)現(xiàn)低通、高通、帶通和帶阻等不同類型的濾波器。
常見的誤差函數(shù)有如下幾種:
(1)加權(quán)逼近誤差函數(shù):
(2)平方誤差函數(shù):
(3)最小化誤差函數(shù):
其中G(ω)是用于不同頻帶中的加權(quán)函數(shù),δp、δs分別為通帶和阻帶波紋。
傳統(tǒng)窗函數(shù)設(shè)計(jì)方法從時(shí)域角度出發(fā),把無限長(zhǎng)的脈沖響應(yīng)hd(n)用有限長(zhǎng)的窗函數(shù)序列w(n)截取成有限長(zhǎng)的脈沖響應(yīng)h(n):
窗的點(diǎn)數(shù)N及窗的形狀是窗函數(shù)法中兩個(gè)極重要的參數(shù)。該方法的主要缺點(diǎn)是在頻域?qū)е录妓剐?yīng),因而在具體設(shè)計(jì)中,通帶、阻帶波紋的改善通常以加寬過渡帶為代價(jià)。
頻率抽樣設(shè)計(jì)法從頻域的角度出發(fā),只是簡(jiǎn)單地對(duì)給定的理想頻率響應(yīng)等間隔采樣,然后通過離散傅里葉反變換獲得相應(yīng)的脈沖響應(yīng)。頻率采樣法僅在采樣點(diǎn)處獲得所需的頻率響應(yīng),在其他點(diǎn)仍然存在誤差;可以控制阻帶衰減,但通帶波紋不易控制。
還有一些較經(jīng)典的設(shè)計(jì)方法,例如雷米茲算法可以自由選擇濾波器的階數(shù)、通帶、阻帶以及誤差加權(quán)函數(shù),但是其計(jì)算較復(fù)雜。此外加權(quán)最小二乘也是比較流行的算法之一,但求解過程中需計(jì)算矩陣的逆,在求解高階矩陣時(shí),逆矩陣求解困難。大多數(shù)FIR濾波器的設(shè)計(jì)方法都只能獲得理想濾波器的近似解,隨著濾波器階數(shù)的增加,傳統(tǒng)方法設(shè)計(jì)數(shù)字濾波器就會(huì)更加困難。
作為啟發(fā)式算法的經(jīng)典算法之一,遺傳算法(Genetic Algorithms,GA)的核心在于通過變化和選擇來逐步提高一組候選解決方案的質(zhì)量。在數(shù)字濾波器設(shè)計(jì)領(lǐng)域,遺傳算法得到了廣泛的關(guān)注和研究。自SUCKLEY D[12]首次提出用遺傳算法設(shè)計(jì)數(shù)字濾波器以來,已經(jīng)有超過一百多種使用GA來設(shè)計(jì)的方案。
SRIRANGANATHAN S[13]1995年提出使用遺傳算法來降低數(shù)字濾波器復(fù)雜度,采用加權(quán)逼近誤差,使通帶和阻帶的加權(quán)波紋值極小,將此方法和模擬退火方法相比,結(jié)果表明遺傳算法計(jì)算量小。文獻(xiàn)[14]用遺傳算法設(shè)計(jì)時(shí)分別采用平方誤差和加權(quán)逼近誤差函數(shù),結(jié)果表明加權(quán)逼近誤差函數(shù)比平方誤差得到的濾波器系數(shù)更優(yōu)。TZENG S T[15]使用一種具有加權(quán)功能新的遺傳算法,該方法基于迭代復(fù)數(shù)遺傳算法并且用先前的迭代結(jié)果來更新每次迭代時(shí)的加權(quán)函數(shù),通過設(shè)計(jì)單通帶濾波器和復(fù)雜的全通濾波器驗(yàn)證算法的有效性。CEN L[16]通過整合自適應(yīng)遺傳算法,模擬退火算法和禁忌搜索算法的主要特征,提出一種混合遺傳算法,結(jié)果可以大大降低濾波器的歸一化峰值波紋的值。文獻(xiàn)[17]提出一種將遺傳算法與局部?jī)?yōu)化方法相結(jié)合的新型混合遺傳算法,根據(jù)粒子的多樣性來減少搜索空間,并有助于GA擺脫局部最優(yōu),從而防止過早收斂,但是需要更多的計(jì)算。孫田雨[18]提出通過改進(jìn)遺傳算法的變異交叉的概率和算子兩個(gè)方面來改善早熟收斂的問題,并且通過實(shí)例驗(yàn)證了改進(jìn)算法的可行性。遺傳算法不僅能設(shè)計(jì)一維數(shù)字濾波器,在二維數(shù)字濾波器設(shè)計(jì)上也得到了研究,文獻(xiàn)[19]引入穩(wěn)定性約束條件作為二維數(shù)字濾波器的設(shè)計(jì)標(biāo)準(zhǔn),通過使用遺傳算法來設(shè)計(jì)二維的數(shù)字濾波器,結(jié)果能保證濾波器的穩(wěn)定性。
通常,遺傳算法執(zhí)行時(shí)需要交叉和變異算子,由于設(shè)置的參數(shù)多,用于評(píng)估單個(gè)功能的執(zhí)行時(shí)間可以長(zhǎng)達(dá)數(shù)分鐘或數(shù)小時(shí),而使用傳統(tǒng)方法時(shí),執(zhí)行時(shí)間不到幾秒。計(jì)算時(shí)間成為制約GA應(yīng)用的關(guān)鍵瓶頸。實(shí)際上,遺傳算法應(yīng)用于特定問題中主要有兩個(gè)主要缺陷:(1)收斂速度慢;(2)當(dāng)算法有時(shí)找到局部最優(yōu)解時(shí)過早收斂?;旌纤惴梢钥朔@些問題,但又在計(jì)算上增加了難度,迭代過程更加復(fù)雜。
為了克服遺傳算法在數(shù)值優(yōu)化問題中的缺點(diǎn),文獻(xiàn)[20]引入了進(jìn)化算法,進(jìn)化算法的步驟與遺傳算法基本一致,主要包括交叉,變異和選擇,其優(yōu)點(diǎn)主要有:(1)僅使用很少的幾個(gè)控制參數(shù);(2)收斂速度快;(3)無論初始值如何都能找到搜索空間的最小值。文獻(xiàn)[21]中分別就進(jìn)化算法和遺傳算法同時(shí)利用均方誤差函數(shù)設(shè)計(jì)FIR濾波器進(jìn)行性能比較,結(jié)果顯示在同樣迭代次數(shù)下,進(jìn)化算法大約五六秒就能設(shè)計(jì)出最佳濾波器,而遺傳算法大約70 s,另外進(jìn)化算法求解的誤差函數(shù)的結(jié)果性能更好。進(jìn)化算法在文獻(xiàn)[22]中與粒子群算法混合用于濾波器的設(shè)計(jì),混合優(yōu)化技術(shù)有助于避免粒子陷入局部最小值,并且研究和試驗(yàn)了兩種不同的誤差函數(shù),結(jié)果顯示可以實(shí)現(xiàn)較小的波紋但需要較大的過渡寬度。文獻(xiàn)[23]采用混合螢火蟲差分進(jìn)化算法,結(jié)合差分進(jìn)化和螢火蟲技術(shù)的優(yōu)勢(shì),通過螢火蟲運(yùn)動(dòng)增強(qiáng)了差分進(jìn)化的全局搜索能力。文獻(xiàn)[24]中將進(jìn)化算法與小波突變一起用于設(shè)計(jì)FIR低通、高通、帶通和帶阻濾波器,結(jié)果顯示盡管在通帶和阻帶的波動(dòng)較小,但是過渡帶寬仍然需要改進(jìn)。在大多數(shù)的啟發(fā)式算法中,搜索過程本質(zhì)上是隨機(jī)并且具有不確定性,這些算法及其改進(jìn)版本利用它們先前迭代的信息來確定全局最優(yōu)解,進(jìn)化算法在其中表現(xiàn)出更快收斂到全局最優(yōu)解的能力,使其得到廣泛的應(yīng)用[25-31]。
粒子群算法是一種基于社會(huì)心理學(xué)原理的種群隨機(jī)優(yōu)化算法,能夠處理多目標(biāo)函數(shù)優(yōu)化問題。與遺傳和進(jìn)化算法不同,粒子群算法設(shè)計(jì)數(shù)字濾波器設(shè)置的參數(shù)更少、收斂速度快、計(jì)算量小、搜索能力強(qiáng)且結(jié)構(gòu)簡(jiǎn)單易實(shí)現(xiàn)。早期的粒子群算法收斂速度快,可能導(dǎo)致在收斂過程中錯(cuò)過最優(yōu)解,也可能出現(xiàn)粒子趨同的現(xiàn)象,導(dǎo)致粒子的多樣性減少,使算法優(yōu)化到一定程度無法繼續(xù)。隨后研究人員從以下幾個(gè)方面對(duì)算法進(jìn)行改進(jìn):(1)由于算法要設(shè)置的參數(shù)較少,因此參數(shù)的改進(jìn)大多針對(duì)慣性權(quán)重和學(xué)習(xí)因子;(2)將粒子群算法與多種算法(比如進(jìn)化、遺傳等算法)混合使用來優(yōu)化設(shè)計(jì)數(shù)字濾波器,使其取長(zhǎng)補(bǔ)短達(dá)到更好的優(yōu)化效果。
1.5.1 慣性權(quán)重的改進(jìn)
粒子群算法最初由Kennedy等提出,SHI Y等[32]在粒子群算法中添加新的慣性權(quán)重,從而控制粒子的收斂速度,更新后的方程如下:
研究表明,慣性權(quán)重的調(diào)整對(duì)粒子群算法的性能有影響。慣性權(quán)重通過先前粒子的速度控制當(dāng)前粒子的速度,從而調(diào)節(jié)粒子在全局搜索和局部搜索之間的矛盾。較大的慣性權(quán)重有利于加強(qiáng)全局搜索能力,而較小的慣性權(quán)重則有利于局部搜索,所以如何平衡兩者之間的關(guān)系也是改進(jìn)的難點(diǎn)之一。Pavani等將這種改進(jìn)的算法與早期的粒子群算法,窗函數(shù)法以及頻率采樣法等,從通帶、阻帶增益以及執(zhí)行時(shí)間等方面進(jìn)行比較,都在一定程度上顯示了引入慣性權(quán)重對(duì)于粒子群算法設(shè)計(jì)數(shù)字濾波器性能提升上的優(yōu)勢(shì)。
最初針對(duì)慣性權(quán)重的改進(jìn)只是將其設(shè)為一個(gè)常數(shù),為了進(jìn)一步平衡局部搜索能力和全局搜索能力并跳出局部最優(yōu)解,SHI Y等將w線性表示為:
其中,wmax是慣性權(quán)重的最大值,wmin是最小值,t為當(dāng)前迭代次數(shù),T為總體迭代次數(shù)。除此之外,陳貴敏等[33]提出其他三種改進(jìn)慣性權(quán)重的策略:
實(shí)際測(cè)試中第三種策略的收斂精度和收斂速度均優(yōu)于其他兩個(gè)。
改進(jìn)慣性權(quán)重的相關(guān)研究包括:HUANG W P等[34]利用式(9)慣性權(quán)重粒子群算法代替頻率采樣法濾波器的設(shè)計(jì),獲得了最大阻帶衰減,但是標(biāo)準(zhǔn)的粒子群算法容易陷入局部最優(yōu)。李輝等[35]使用式(9)改進(jìn)的粒子群算法優(yōu)化數(shù)字濾波器參數(shù)過程中發(fā)現(xiàn)初始值的選取僅影響收斂速度。周飛紅等[36]比較了慣性粒子群算法和Parks-McClellan(PM)兩種方法設(shè)計(jì)高通數(shù)字濾波器,結(jié)果表明前者設(shè)計(jì)的數(shù)字濾波器阻帶衰減更大,通帶波動(dòng)更小。
1.5.2 學(xué)習(xí)因子的改進(jìn)
在早期的粒子群算法中將學(xué)習(xí)因子c1、c2設(shè)為常數(shù),使得粒子自身認(rèn)知能力和全局認(rèn)知能力達(dá)到平衡,但是按照經(jīng)驗(yàn)設(shè)計(jì)的常數(shù)學(xué)習(xí)因子濾波器的幅頻響應(yīng)與理想的頻率響應(yīng)有很大的誤差。因此,也有學(xué)者在學(xué)習(xí)因子的改進(jìn)上做了些研究工作。Clerc引入壓縮因子來限制學(xué)習(xí)因子,另外還有學(xué)習(xí)因子同步變化、學(xué)習(xí)因子異步變化和三角函數(shù)學(xué)習(xí)因子法,以及慣性權(quán)值的學(xué)習(xí)因子的改進(jìn)等,這些方法一定程度上提高了濾波器的設(shè)計(jì)性能。
1.5.3 粒子群算法的其他改進(jìn)策略
傳統(tǒng)粒子群算法的問題在于過早收斂和不穩(wěn)定,已經(jīng)有很多種克服了以上兩種缺點(diǎn)的改進(jìn)粒子群算法應(yīng)用于FIR濾波器的設(shè)計(jì)中,其中包括反向?qū)W習(xí)(OPSO)粒子群算法、瘋狂PSO(CRPSO)、混合算法(DEPSO)和混沌粒子群(CPSO)等。JEHAD I A等[37]使用粒子群算法和遺傳算法設(shè)計(jì)了FIR數(shù)字濾波器,PSO參數(shù)設(shè)計(jì)比GA所需參數(shù)更為簡(jiǎn)單直觀,此外文中的兩個(gè)設(shè)計(jì)案例都顯示粒子群算法可成功實(shí)現(xiàn)優(yōu)化目標(biāo),而且收斂性優(yōu)于遺傳算法。SUN J等[38-39]根據(jù)粒子群的量子行為,提出新的量子粒子群算法模型,其全局搜索能力遠(yuǎn)遠(yuǎn)高于標(biāo)準(zhǔn)的粒子群算法。呂國(guó)等[40]將量子粒子群算法應(yīng)用于數(shù)字濾波器設(shè)計(jì)中并且與標(biāo)準(zhǔn)粒子群算法比較,結(jié)果表明運(yùn)算量相對(duì)減少,通帶變寬,幅頻響應(yīng)更接近理想特性。梁慧等[41]將混沌搜索策略與粒子群優(yōu)化算法相結(jié)合設(shè)計(jì)高通數(shù)字濾波器,與PM設(shè)計(jì)方法相比較,結(jié)果顯示前者設(shè)計(jì)的濾波器通帶波動(dòng)小,阻帶衰減大,收斂速度快。ZHAO Z等[42]分別將混沌粒子群算法與原始的粒子群算法和量子粒子群算法用于設(shè)計(jì)數(shù)字濾波器并分析對(duì)比,發(fā)現(xiàn)混沌粒子群算法能夠以更少的時(shí)間收斂到全局最優(yōu)。KAR R等[43]提出用基于瘋狂度的粒子群算法優(yōu)化設(shè)計(jì)數(shù)字濾波器,引入瘋狂算子,確保粒子的多樣性,改善易陷于局部最小值的問題。趙安新等[44]用綜合學(xué)習(xí)粒子群算法改進(jìn)頻率采樣法設(shè)計(jì)數(shù)字濾波器,節(jié)約了粒子在錯(cuò)誤方向上花費(fèi)的時(shí)間,解決粒子群算法易于陷入局部最優(yōu)點(diǎn)的問題。KUMAR P U[45]等將PSO與傳統(tǒng)算法相比,不僅改善阻帶的衰減,而且利用了在不連續(xù)點(diǎn)附近對(duì)樣本值進(jìn)行插值,從而減少誤差。AGGARWAL A[46]等研究了布谷鳥搜索算法、粒子群算法和遺傳算法設(shè)計(jì)數(shù)字濾波器的性能對(duì)比,結(jié)果顯示粒子群算法設(shè)計(jì)的結(jié)果在收斂速度,執(zhí)行時(shí)間和幅度響應(yīng)誤差精度等方面都略遜于布谷鳥搜索算法,說明粒子群算法在設(shè)計(jì)數(shù)字濾波器的參數(shù)設(shè)計(jì)上還有待改進(jìn)。SHAO P[47]等將基于折射相反學(xué)習(xí)模型改進(jìn)的粒子群優(yōu)化算法用于設(shè)計(jì)具有線性相位的FIR低通和高通數(shù)字濾波器,結(jié)果表明此方法設(shè)計(jì)數(shù)字濾波器的性能優(yōu)于其他算法,此方法可以獲得更快的收斂速度和更好的精度。
以上基于智能算法設(shè)計(jì)濾波器的性能基本集中在通帶和阻帶波紋,表1從濾波器的階數(shù)(Order)、最大阻帶衰減(Maximum stop band attenuation)、最大通帶波紋(Maximum pass band ripple)、最大阻帶波紋(Maximum stop band ripple)和過渡帶寬(Transition Width)五個(gè)方面對(duì)多種設(shè)計(jì)算法進(jìn)行分析對(duì)比,結(jié)果顯示改進(jìn)后的粒子群算法、進(jìn)化算法在通帶衰減和阻帶波紋方面都顯示其優(yōu)越性。
表1 多種算法設(shè)計(jì)FIR濾波器參數(shù)比較
本文對(duì)FIR數(shù)字濾波器設(shè)計(jì)常用的幾種典型啟發(fā)式優(yōu)化算法進(jìn)行綜述。將濾波器的設(shè)計(jì)問題轉(zhuǎn)化為多參數(shù)優(yōu)化,通過使用不同的優(yōu)化技術(shù)讓誤差函數(shù)最小,從而確定濾波器系數(shù)。上文就經(jīng)典方法和智能算法分開進(jìn)行闡述,發(fā)現(xiàn)了智能算法在設(shè)計(jì)時(shí)間和準(zhǔn)確度等方面比傳統(tǒng)的設(shè)計(jì)技術(shù)更優(yōu)越。
對(duì)于復(fù)雜的優(yōu)化問題使用遺傳算法、粒子群算法和差分進(jìn)化等智能算法求解,由于智能算法求解是隨機(jī)搜索的過程,可能使得每一次的運(yùn)行結(jié)果,收斂曲線都有一定的不同,在數(shù)字濾波器的設(shè)計(jì)過程中一般認(rèn)為幅頻響應(yīng)或單位脈沖響應(yīng)收斂于一個(gè)固定值時(shí),該固定值就是此次運(yùn)算的最優(yōu)解,所以判斷哪一次運(yùn)行結(jié)果是最優(yōu)值,參考文獻(xiàn)中提出大概兩種方法:(1)多運(yùn)行幾次對(duì)比;(2)統(tǒng)計(jì)計(jì)算的每次結(jié)果分析平均值或方差等進(jìn)行判斷。另外誤差函數(shù)是個(gè)很好的性能指標(biāo)判斷條件,但是也不是適用于所有濾波器的通用標(biāo)準(zhǔn)。
幾種經(jīng)典算法中,雖然遺傳算法使用率最高,但是從文章的分析可以看出,遺傳算法由于設(shè)計(jì)濾波器時(shí)參數(shù)比粒子群算法和差分進(jìn)化算法都相對(duì)復(fù)雜,所以如何降低計(jì)算復(fù)雜度,同時(shí)又能保證濾波器性能是繼續(xù)努力的方向。雖然采用粒子群算法和差分進(jìn)化算法設(shè)計(jì)數(shù)字濾波器一直表現(xiàn)出良好的效果,但是實(shí)際應(yīng)用方面距離理論設(shè)計(jì)還是有一定的差距,所以實(shí)際應(yīng)用緊跟理論研究也是今后繼續(xù)努力的方向。