IIR濾波器不易做成線性相位,F(xiàn)IR濾波器只要滿足一定條件就可做成線性相位,F(xiàn)IR濾波器有傳統(tǒng)的設(shè)計(jì)方法,如窗函數(shù)法、頻率采樣法、切比雪夫逼近法等;曾喆昭等人提出了一種基于余弦基神經(jīng)網(wǎng)絡(luò)的算法,給出了該算法的收斂條件,并將其應(yīng)用到高階多通帶FIR濾波器中,用實(shí)例說(shuō)明了該算法在精度、計(jì)算速度等方面的優(yōu)越性?;谶@種算法,有人分別將其在數(shù)域和維數(shù)上做出了推廣。
本文提出的方法,是基于余弦基神經(jīng)網(wǎng)絡(luò)設(shè)計(jì)方法的一種改良,其基本思想首先是使設(shè)計(jì)頻響與理想頻響之間的全局誤差在通帶和阻帶范圍最小,其次再使用模擬退火算法,以最小阻帶衰減為評(píng)價(jià)函數(shù)優(yōu)化網(wǎng)絡(luò)權(quán)值,使最后的結(jié)果朝著最優(yōu)值靠近。由該方法設(shè)計(jì)的濾波器,通帶和阻帶范圍無(wú)過(guò)沖、無(wú)波動(dòng),且阻帶的衰減高,初始條件隨機(jī)給定,算法速度快,因而是一種有效的設(shè)計(jì)方法。
1 I型線性相位FIR濾波器的幅頻特性
若脈沖響應(yīng)h(n)是實(shí)序列,且滿足h(n)=h(N-1-n),N為脈沖響應(yīng)h(n)的長(zhǎng)度,并且N為奇數(shù),則有:
容易看出,此式是由(N+1)/2個(gè)余弦項(xiàng)迭加而成的函數(shù),而此函數(shù)在ω=0,π,2π處均不等于零,因此I型線性相位FIR濾波器既可以用作低通濾波器(在ω=0處,幅度函數(shù)不為零),也可用作高通濾波器(在ω=π處,幅度函數(shù)不為零),而且也可以用作帶通和帶阻濾波器,是應(yīng)用最為廣泛的。
2 余弦基神經(jīng)網(wǎng)絡(luò)
在網(wǎng)絡(luò)結(jié)構(gòu)方面,如圖1所示,類似于BP網(wǎng)絡(luò)的結(jié)構(gòu):
輸入層和輸出層都只有一個(gè)節(jié)點(diǎn),隱含層有M個(gè)節(jié)點(diǎn),且各節(jié)點(diǎn)對(duì)應(yīng)的激勵(lì)函數(shù)如下:
式中:M=(N-1)/2
再令輸入層到隱含層的全值都為1,而隱含層到輸出層的權(quán)值ω0~ωM分別取為a0~aM,于是神經(jīng)網(wǎng)絡(luò)的輸入/輸出關(guān)系就恰好為濾波器的幅度函數(shù)
網(wǎng)絡(luò)學(xué)習(xí)算法方面,也可以采用類似BP網(wǎng)絡(luò)的學(xué)習(xí)算法。
首先定義權(quán)值矩陣:
設(shè)置性能指標(biāo):
為訓(xùn)練樣本數(shù)。
于是權(quán)值修正的公式為:
式中:α為學(xué)習(xí)速率。
迭代的終止條件可設(shè)為性能指標(biāo)J滿足一定條件,而關(guān)于學(xué)習(xí)速率α的選取會(huì)直接影響到神經(jīng)網(wǎng)絡(luò)的穩(wěn)定性。目前,已經(jīng)有人提出了其適當(dāng)?shù)倪x取范圍,例如羅玉雄等人已經(jīng)證明,當(dāng)滿足0<α<(2/|| C ||2)時(shí)(這里||·||2表示的是歐氏范數(shù)的平方),神經(jīng)網(wǎng)絡(luò)是穩(wěn)定的;曾喆昭等人也提出并證明了當(dāng)滿足0<α<(4/N)時(shí),神經(jīng)網(wǎng)絡(luò)是穩(wěn)定的。
3 模擬退火算法
由于以上的網(wǎng)絡(luò)學(xué)習(xí)算法從本質(zhì)上來(lái)說(shuō),還是一種BP算法,所以不可避免地會(huì)存在BP算法的缺陷,初始值的選取會(huì)影響最終結(jié)果,且容易陷入局部極小值。
模擬退火算法與初始值無(wú)關(guān),算法求得的解與初始解狀態(tài)(是算法迭代的起點(diǎn))無(wú)關(guān);模擬退火算法具有漸近收斂性,在理論上已得到嚴(yán)格證明,當(dāng)初溫充分高,降溫足夠慢,每一溫度下抽樣足夠長(zhǎng),最終溫度趨于零時(shí),算法最終以概率1收斂到全局最優(yōu)解。模擬退火算法通過(guò)概率判斷來(lái)接受新?tīng)顟B(tài)是算法在局部極小解處有機(jī)會(huì)跳出并最終趨于全局最優(yōu)的根本原因。于是將模擬退火算法加到前面的算法中去,就可以很好地彌補(bǔ)上述算法的不足。
模擬退火算法的步驟如下:
(1)由一個(gè)產(chǎn)生函數(shù)從當(dāng)前解S產(chǎn)生一個(gè)位于解空間的新解S’。
(2)計(jì)算與新解所對(duì)應(yīng)的目標(biāo)函數(shù)差。這里以最小阻帶衰減為評(píng)價(jià)函數(shù)C(S),這個(gè)函數(shù)可以由所得解S輕易地求出,于是目標(biāo)函數(shù)差△t=C(S’)-C(S);
(3)判斷新解是否被接受,其依據(jù)是一個(gè)接受準(zhǔn)則,最常用的接受準(zhǔn)則是Metropolis準(zhǔn)則。若△t≥0,則接受S’作為新的當(dāng)前解S;否則,以概率exp(-△t/T)接受S’作為新的當(dāng)前解S。
(4)當(dāng)新解被確定接受時(shí),用新解代替當(dāng)前解,同時(shí)修正評(píng)價(jià)函數(shù)。此時(shí),當(dāng)前解實(shí)現(xiàn)了一次迭代,可在此基礎(chǔ)上開(kāi)始下一輪試驗(yàn);當(dāng)新解被判定為舍棄時(shí),則在原當(dāng)前解的基礎(chǔ)上繼續(xù)下一輪試驗(yàn)。
將模擬退火融入原算法,其實(shí)主要是用原算法來(lái)實(shí)現(xiàn)模擬退火中第(1)步的產(chǎn)生解S,于是可得到總的算法:
(1)初始化,初始溫度T(充分大),初始解狀態(tài)S(是算法迭代的起點(diǎn)),每個(gè)T值的迭代次數(shù)L,初始權(quán)值W,性能指標(biāo)J,學(xué)習(xí)速率α,并且設(shè)定目標(biāo)向量(理想幅頻響應(yīng)Hg(ωk));
(2)對(duì)k=1,2,…,L做第(3)~(8)步驟;
(3)計(jì)算誤差E(k),使用權(quán)值修正公式:W=W+αE(k)C(Ωk)修正權(quán)值;
(4)滿足性能指標(biāo)J轉(zhuǎn)步驟(5),否則轉(zhuǎn)步驟(3);
(5)由步驟(4)產(chǎn)生的W得出新解S’;
(6)以濾波器的最小阻帶衰減為評(píng)價(jià)函數(shù),計(jì)算△t,其中△t=C(S)-C(S);
(7)若△t>0,則接受S’作為新的當(dāng)前解,否則以概率exp(-△t/T)接受S’作為新的當(dāng)前解;
(8)如果滿足終止條件,則輸出當(dāng)前解作為最優(yōu)解,終止條件通常取為連續(xù)若干個(gè)新解都沒(méi)有被接受;
(9)減小T,轉(zhuǎn)步驟(2)。當(dāng)T→0時(shí),終止算法。
4 仿真實(shí)例
例1:設(shè)計(jì)一線性相位高通FIR濾波器,其理想幅頻特性為:
對(duì)Ω在[0,π]范圍內(nèi)均勻取樣,共取(N+1)/2=60個(gè)樣點(diǎn),即Ωk=πk/59(k=0,1,2,…,59),為了使通帶和阻帶內(nèi)無(wú)過(guò)沖、無(wú)波動(dòng),在過(guò)渡帶內(nèi)取兩個(gè)點(diǎn)0.78和0.25,于是實(shí)際的幅頻取樣點(diǎn)為Hd(k)=[zeros(1,29),0.25,0.78,ones(1,29)];網(wǎng)絡(luò)結(jié)構(gòu)取為1×60×1,性能指標(biāo)設(shè)置為J=10-8。
經(jīng)過(guò)計(jì)算機(jī)仿真得到如圖2和圖3的仿真圖。
例2:設(shè)計(jì)一線性相位帶阻FIR濾波器,其理想幅頻特性為:
與例1類似,對(duì)Ω在[0,π]范圍內(nèi)均勻取樣,共取(N+1)/2=60個(gè)樣點(diǎn),即Ωk=πk/59,(k=0,1,2,…,59),同樣地,為了使通帶和阻帶內(nèi)無(wú)過(guò)沖,無(wú)波動(dòng),在過(guò)渡帶內(nèi)取兩個(gè)點(diǎn)0.78和0.25,于是實(shí)際的幅頻取樣點(diǎn)為Hd(k)=[ones(1,17),0.78,0.25,zeros(1,16),0.25,0.78,ones(1,23)];網(wǎng)絡(luò)結(jié)構(gòu)取為1×60×1,性能指標(biāo)設(shè)置為J=10-8。
經(jīng)過(guò)計(jì)算機(jī)仿真得到如圖4和圖5的仿真圖。
通過(guò)仿真,可以和與文獻(xiàn)[2]中的算法相比較。在這里以例1中的情形為例,兩種方法各運(yùn)行10次,取最后得到的最小阻帶衰減(單位:dB)和程序的運(yùn)行時(shí)間(單位:s)來(lái)比較:
文獻(xiàn)[2]中的算法:
兩者相比較可得,雖然在運(yùn)行時(shí)間上本文的算法遜于文獻(xiàn)[2]中的算法,但這個(gè)運(yùn)行時(shí)間本身也僅0.5 s左右,是可以接受的。在性能上本文的算法得出的結(jié)果幾乎都在-190 dB左右,而文獻(xiàn)E23中算法得出的結(jié)果則在-77~-93 dB之間波動(dòng),因此可以說(shuō)用本文的算法可以得到更好、更穩(wěn)定的最小阻帶衰減。
5 結(jié) 語(yǔ)
本文方法的特點(diǎn)是先用類似BP網(wǎng)絡(luò)的方法調(diào)整神經(jīng)網(wǎng)絡(luò)權(quán)值,再用模擬退火技術(shù)進(jìn)行優(yōu)化,獲取更好的FIR濾波器的脈沖響應(yīng),從而完成濾波器的設(shè)計(jì)。由文中給出的兩個(gè)范例可以看出,設(shè)計(jì)濾波器的幅頻響應(yīng)在通帶與阻帶范圍均無(wú)過(guò)沖現(xiàn)象,衰耗特性好,阻帶最小衰減在190 dB以上,通帶沒(méi)有衰減。而且這種方法可以輕松地實(shí)現(xiàn)低通、高通、帶通、帶阻FIR濾波器的設(shè)計(jì),程序運(yùn)行時(shí)間均在0.5 s左右,是一種十分有效的設(shè)計(jì)方法。