第三章 邊界成分分析演算法介紹
3.1 邊界成分分析演算法
近年來,在處理具有相關度訊號的演算法陸續被提出,其中 Cruces 等人於 2010 年提出邊界成分分析演算法(bounded component analysis,BCA)[7],2012 年 Erdogan 基於訊號源是有邊界的假設,提出另一種以體積比最大化求得最佳分離矩 陣的 BCA 演算法[10][11],分離效能很好,且同樣可以處理具有相關度和數據量較
爾積(Cartesian product),SSp代表第p個訊號源的凸型支集(convex support),1≤ p≤n。 hyper-ellipsoid)和邊界超矩形(bounding hyper-rectangle),這兩個幾何概念跟輸 出訊號Y 有關。在此先定義輸入訊號與輸出訊號映射的相對關係:
21
22
23
24 maximizevol(
Y
25
26
運算流程如圖 3.3 所示,先求得白化矩陣做為分離矩陣的初始值,接著進行疊 代運算,當運算完成 300 次後得到分離矩陣,其中 B=B+μUpdate 代表(3.25)式。
表 3.1 為演算法的特性整理,具有可處理獨立和具有相關度的訊號等優點,但需運 算白化、共變異數矩陣和反矩陣。
3.1.7 體積變化情形與疊代次數
表 3.2 是三個訊號源的主要超橢球和邊界超矩形的體積示意圖,三個訊號源混 合後,經過疊代運算,觀察疊代運算時體積比變化情形的對照圖。表 3.2(a)為三個 訊號源的體積比,目標要將混合訊號的體積比變回原本的體積比。乘上混合矩陣 後,可以得到表 3.2(b),為混合後的體積變化情形,可以看到混合後體積皆有變化,
主要超橢球的體積變小,而邊界超矩形的體積變大。接著使用演算法開始進行疊 代運算,表 3.2(c)是經過一次疊代運算後的體積變化情形,可以看到邊界超矩形的 體積產生變化。接著看到表 3.2(d),經過 10 次疊代運算後的體積變化情形,主要 超橢球的體積逐漸變大。到了第 30 次疊代運算,邊界超矩形體積越來越小,超橢 球的體積越來越大。後面的疊代運算,不斷修正體積比,使體積比達到最大值,
變回接近原本訊號源的體積比。整個疊代運算過程在 60 次疊代時,就跟原本的體 積比相像,到 100 次之後體積比就沒什麼變動,可以推測 BCA 演算法大約在 100 次左右的疊代運算,輸出結果趨近收斂。
表 3.2 主要超橢球和邊界超矩形的體積比變化情形與疊代次數關係
(a) 三個訊號源 (b) 接收端接收到的混合訊號
27
(c) 疊代運算 1 次 (d) 疊代運算 10 次
(e) 疊代運算 30 次 (f) 疊代運算 60 次
(g) 疊代運算 100 次 (h) 疊代運算 150 次
28
(i) 疊代運算 240 次 (j) 疊代運算 300 次
3.1.8 BCA 演算法偽代碼
BCA 演算法的偽代碼(pseudocode)如表 3.3 所示,原始程式為參考文獻[19]。
其中 L 為數據的長度,N 為訊號源個數,X 為接收到的訊號,mX 是 X 的均值,
Rx 是 X 的共變異數矩陣,eig(Rx)是求 Rx 的特徵值和特徵向量,W 是白化矩陣,
B 為分離矩陣,NumofIterations 是疊代次數,Y 為輸出訊號,inv(⋅)為求取反矩陣,
第 11 行為(3.25)式,其餘對應的數學式如表 3.4 所示。BCA 演算法是將白化矩陣 做為分離矩陣的初始值,疊代運算完成後可得最佳的分離矩陣。
表 3.3 BCA 演算法偽代碼 01 mX = mean( X' )';
02 Rx = X * X' / L – mX * mX';
03 [U D] = eig( Rx );
04 W = sqrt(D)^(-1) * U';
05 B = W;
06 for k = 1 : NumofIterations 07 Y = B * X;
08 UBoundingBox = N * SiW / l1norm;
09 UHyperEllipse = inv(BRxB') * B * Rx;
10 Update = UHyperEllipse - UBoundingBox;
11 B = B + mu * Update;
12 end
13 Y = B * X;
29
UBoundingBox
∑
=
UHyperEllipse x
T