郭松林,徐海鵬
(黑龍江科技大學(xué) 電氣與控制工程學(xué)院, 哈爾濱 150022)
現(xiàn)有的信號分析方法有很多,常用的小波分析法和傅里葉分析法。基于傅里葉變換的信號處理方法由于非周期采樣產(chǎn)生泄露誤差,使測得的幅值、頻率和相角偏離實(shí)際值,特別相位測量誤差更大。相對于傅里葉變換分析,小波分析具有較大優(yōu)勢,因?yàn)樾〔ê瘮?shù)在時域和頻域內(nèi)具有局部分析和多分辨率分析的優(yōu)勢。但由于采樣點(diǎn)序列以及所選用的濾波器長度有限,因此,在計(jì)算邊緣點(diǎn)時會遇到邊界問題,隨著分解不斷進(jìn)行,重構(gòu)誤差會不斷增大。此外,小波分析的運(yùn)算較復(fù)雜,且小波基函數(shù)也不易選擇,這也是小波分析方法自身的缺點(diǎn)。
獨(dú)立分量分析方法(ICA),是近年發(fā)展起來的一種有效的盲信號分離方法。該算法可以僅僅根據(jù)輸入信號的一些基本統(tǒng)計(jì)特征,在瞬時混疊參數(shù)不清楚的情況下,由觀測信號恢復(fù)出源信號的過程。通過不斷發(fā)展和完善的算法理論,使其在語音信號處理、圖像處理、無線通信技術(shù)、生物醫(yī)學(xué)工程和電氣領(lǐng)域等應(yīng)用十分廣泛[1]。而基于牛頓二階收斂的快速獨(dú)立分量分析(Fast-ICA)算法,相比于ICA算法收斂速度雖然更快,但依然存在收斂精度和分離性能不高的問題。
筆者為了進(jìn)一步提高算法的收斂速度和分離性能,減小算法的誤差,在原Fast-ICA算法的基礎(chǔ)上改進(jìn)算法,使改進(jìn)后的算法滿足四階牛頓收斂特性,提升改進(jìn)后算法的收斂精度與分離性能。
典型的盲源分離(BSS)原理[2]如圖1所示。
圖1 盲源分離原理Fig. 1 Schematic of BSS
n個相互獨(dú)立的源信號S(t)=[s1(t),s2(t),…,sn(t)]在經(jīng)過一個未知的混合系統(tǒng)后,得到觀測信號X(t)=[x1(t),x2(t),…,xm(t)],可以近似的表示為
X(t)=A·S(t),
式中:A——m×n維滿秩可逆混合矩陣;
X(t)——觀測信號;
S(t)——源信號。
當(dāng)僅知道觀測信號X(t)時,可以通過盲源分離優(yōu)化算法得到分離矩陣,從而得到分離信號為
Y(t)=w·X(t),
式中:w——m×n維滿秩可逆混合矩陣;
Y(t)——分離信號。
Y(t)=[y1(t),y2(t),…,yn(t)],盲源分離算法就是根據(jù)y(t)之間的統(tǒng)計(jì)獨(dú)立性,確定分離矩陣w的過程。為了使盲源分離可以有效地分離,往往需要一些條件來約束,盲源分離最基本的是假設(shè)源信號彼此之間是統(tǒng)計(jì)獨(dú)立的,混合矩陣是可逆的,在源信號中高斯信號至多有一個[3]。
分離矩陣w是盲源分離以信號的某種獨(dú)立性為依據(jù)確定的。度量信號統(tǒng)計(jì)獨(dú)立性的兩個常用指標(biāo)是峭度和負(fù)熵,但峭度容易受到野值的影響,但熵在信息論中是一個較為穩(wěn)健的判據(jù)。隨機(jī)信號的負(fù)熵[4]可以表示為
J(y)=[E{G(y)}-E{G(yg)}]2,
式中:J(y)——負(fù)熵;
E{G(y)}——G(y)的數(shù)學(xué)期望;
y——變量Y的分量;
yg——具有與y同樣方差的高斯變量。
如果要分量y的數(shù)學(xué)期望E{G(yg)}越小,就需要其非高斯性越強(qiáng),負(fù)熵J(y)越大。依據(jù)負(fù)熵判據(jù)尋找矩陣w,使負(fù)熵J(y)最大。即對E{G(y)}=E{G(wTx)} 求極值,使最大。因此,導(dǎo)數(shù)應(yīng)為
wT——分離矩陣w的轉(zhuǎn)置矩陣。
g為G的導(dǎo)數(shù),設(shè):xt為t時刻的輸入變量X的分量,t+1時刻的輸入變量X的分量由牛頓迭代定理可表示為
t時刻的算法的輸入變量分離矩陣為
式中,wt——t時刻的分離矩陣。
因此,分離矩陣為
不難證明當(dāng)在原有 Fast-ICA 算法中牛頓迭代算法式是二階收斂的。由于牛頓算法收斂階數(shù)越高,算法的收斂速度越快,修正原式,使之滿足四階收斂,減小改進(jìn)后算法的誤差并提高收斂速度[5]。其修正形式為
由修正后的牛頓迭代公式,可推得改進(jìn) Fast-ICA 算法公式為
改進(jìn)Fast-ICA算法分由預(yù)處理(中心化處理和白化處理)與基于負(fù)熵的盲分離算法兩部分組成,流程如圖2所示。
圖2 改進(jìn)算法流程Fig. 2 Improved algorithm flow
設(shè)f(x)為實(shí)數(shù)域內(nèi)四階可導(dǎo)函數(shù),如果a是f(x)的單根,且x0充分靠近a,則可以根據(jù)修正后的牛頓迭代公式定義改進(jìn)后牛頓迭代誤差方程為
證明:設(shè)
en=xn-a,
式中:f(a)=0,f′(a)≠0,y(a)=a,
計(jì)算得
則,迭代公式可以表示為
因此,改進(jìn)后的Fast-ICA算法是四階收斂的。
誤差方程為
通過以下方法來確定改進(jìn)后的誤差,設(shè)
函數(shù)表達(dá)式為
四階Fast-ICA算法的最小逼近誤差為
假設(shè)四階Fast-ICA誤差為10-6>ε>10-7,構(gòu)建Lyapunov函數(shù)為
V(x)=εe-(x-a),
當(dāng)誤差為10-6>ε>10-7時,算法是一定收斂的。對比原算法10-5>ε1>10-6有明顯減小[7]。
利用Matlab實(shí)現(xiàn)Fast-ICA算法對混合信號的分離,為了驗(yàn)證改進(jìn)算法的有效性,對比分析改進(jìn)后算法與原算法的仿真結(jié)果。
源信號為三路不同的語音信號,利用Matlab將源信號通過隨機(jī)混合矩陣混合,得到混合信號。三路原始語音信號如圖3所示,混合后語音信號如圖4所示。
圖3 源信號Fig. 3 Source signal
圖4 混合信號Fig. 4 Mixed signal
由圖4可見,得到混合信號后,分別利用傳統(tǒng)的Fast-ICA算法和改進(jìn)后的Fast-ICA算法分離混合信號。從圖5、6可以看出,改進(jìn)后的算法使語音信號成功分離。
圖5 Fast-ICA分離信號Fig. 5 Fast-ICA separation signal
圖6 改進(jìn)的Fast-ICA分離信號Fig. 6 Improved Fast-ICA separation signal
為了比較兩種算法實(shí)時性,分別對兩種算法進(jìn)行了10次信號分離實(shí)驗(yàn),記錄了每次實(shí)驗(yàn)兩種算法迭代時間,結(jié)果如圖7所示。原算法和改進(jìn)后的算法的平均迭代時間分別為0.033 6和0.025 6 s,由圖7可以看出,改進(jìn)后算法的分離時間要比原算法短,即前者提高了收斂效率[8]。
圖7 兩種算法迭代時間Fig. 7 Iteration time of two algorithms
圖8a、b分別是改進(jìn)后算法的誤差圖和原算法的誤差圖。由圖8可以看出,改進(jìn)后的Fast-ICA算法比原來的Fast-ICA在檢測精度上有了顯著的提高。綜上所述,改進(jìn)后的Fast-ICA算法不僅可以將各個信號有效的分離,而且在實(shí)時性和準(zhǔn)確性上都要優(yōu)于原有的Fast-ICA算法[9]。
盲源分離算法的分離性能可以通過算法PI值來衡量[10],其計(jì)算公式為
式中:ePI——算法的PI值;
cij——混合矩陣與分離矩陣的乘積;
m——變量的個數(shù)。
如果PI值越小,則說明算法的分離的性能越好,當(dāng)為零時,證明信號已經(jīng)完全分離,通過計(jì)算,得到改進(jìn)后算法的PI值為0.52,原算法的PI值為0.66。改進(jìn)后的算法的值要明顯的小于原算法值,由此說明改進(jìn)后的算法的分離性能要更好。
圖8 改進(jìn)算法與原算法的誤差對比Fig. 8 Comparing error between improved algorithm and original algorithm
針對原算法收斂速度較慢,收斂精度不高的問題,改進(jìn)原有算法,使其滿足四階牛頓收斂,證明了其收斂性,確定了改進(jìn)后算法的誤差范圍。采用PI值來說明算法的分離性能,最終通過仿真實(shí)驗(yàn)證明了文中提出的改進(jìn)的Fast-ICA算法的代次數(shù)和迭代時間均小于原算法,分離信號更接近源信號,分離性能更好。