鸡尾酒宴会问题---ICA独立成分分析[原创]

作者:einyboy or alert

(注本文有些图片来源于网络)

鸡尾酒宴会问题:

      假设在party中有n个人,他们可以同时说话,我们也在房间中一些角落里共放置了n个声音接收器(Microphone)用来记录声音。宴会过后,我们从n个麦克风中得到了一组数据 i表示采样的时间顺序,也就是说共得到了m组采样,每一组采样都是n维的。我们的目标是单单从这m组采样数据中分辨出每个人说话的信号。

图示跟数学表达如下:

 

 


X=AS

S是原始信号,X是麦克峰采集出来的信号,A是表征信道特征的混合矩阵。另一种表达如下:

 

为了求由X求S,我们能不能写出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是一个非线性函数,可以是下面一些函数:

 

 

 

5、W进行归范化:

 

6、如果W没有收敛,转第4步,否则算法结束

代码运行截图如下:

 

 

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

man.wav   源信号

music.wav  源信号

MixedS1.wav混合信号

MixedS2.wav混合信号

SS1.wav解混信号

SS2.wav解混信号

ICADemo.m程序文件

 

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

huandaohack

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值