尾酒宴會問題---ICA獨立成分分析[原創]

作者:einyboy or alert

(注本文有些圖片來源於網絡)

雞尾酒宴會問題:

      假設在party中有n個人,他們可以同時說話,我們也在房間中一些角落裏共放置了n個聲音接收器(Microphone)用來記錄聲音。宴會過後,我們從n個麥克風中得到了一組數據 i表示採樣的時間順序,也就是說共得到了m組採樣,每一組採樣都是n維的。我們的目標是單單從這m組採樣數據中分辨出每個人說話的信號。

圖示跟數學表達如下:

 

 


X=AS

S是原始信號,X是麥克峯採集出來的信號,A是表徵信道特徵的混合矩陣。另一種表達如下:

 

爲了求由XS,我們能不能寫出S=inv(A)*X?是不行的,因爲我們

沒有A的相關知識。我們換個思路,顯然由常識X的分量是相關的,認爲S的分量是相互獨立的(說白點就是不同的說話人),我們找一個矩陣W,使得U = WX,U的個個分量是獨立的就行了,有一種叫做ICA的獨立成分分析算法我以解這種問題。請注意ICA算法要求原信號S是獨立同分布的非高斯分佈才行。ICA對高斯分佈來說是病態,爲什麼呢,想想中心極限定理就知道了。下面對ICA的算法做一個介紹,不做深入的數學推導:

1、         中心化:也就是求X均值,然後讓所有X減去均值。

          X = X-mean(X)

2    白化:目的是將x乘以一個矩陣變成 ,使得 的協方差矩陣是 I 

     

     我們只需用下面的變換,就可以從x得到想要的 

     

     其中使用特徵值分解來得到E(特徵向量矩陣)和D(特徵值對角矩陣),計算公式爲

     

  這樣做的目的是消除二階統計量的相關性,就是PCA分析了。

3、隨機初始化一個矩陣W,並歸一化:


 

4、計算

 

g是一個非線性函數,可以是下面一些函數:


 

 

 

5W進行歸範化:


 

6、如果W沒有收斂,轉第4步,否則算法結束

代碼運行截圖如下:

 

 

代碼:http://download.csdn.net/source/3321665

man.wav   源信號

music.wav  源信號

MixedS1.wav混合信號

MixedS2.wav混合信號

SS1.wav解混信號

SS2.wav解混信號

ICADemo.m程序文件

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章