2012-02-21 40 views
5

我目前使用Matlab创建不同的信号,将它们乘以混合矩阵A进行混合,然后尝试使用FastICA找回原始信号。ICA - 统计独立性和协方差矩阵的特征值

到目前为止,恢复信号与原始信号相比非常糟糕,这不是我所期望的。

我想看看我是否做错了什么。我生成的信号如下:(振幅的范围是[0,1])

s1 = (-x.^2 + 100*x + 500)/3000; % quadratic 
s2 = exp(-x/10); % -ve exponential 
s3 = (sin(x)+ 1) * 0.5; % sine 
s4 = 0.5 + 0.1 * randn(size(x, 2), 1); % gaussian 
s5 = (sawtooth(x, 0.75)+ 1) * 0.5; % sawtooth 
对于ICA是成功

Original Signals

一个条件是至多一个信号是高斯,并且我在信号生成中观察到了这一点。

但是,另一个条件是所有信号都是统计独立的。我知道的是,这意味着,给定两个信号A & B,知道一个信号不会给出关于另一个的任何信息,即:P(A | B)= P(A)其中P是概率

现在我的问题是这样的:我的信号是统计独立的吗?有什么办法可以确定吗?也许一些必须遵守的财产?

我注意到另一件事是,当我计算协方差矩阵的特征值(计算为含有混合的信号的矩阵),的eigenspectrum似乎表明,只有一个(主)主成分。这是什么意思?不应该有5,因为我有5(所谓)独立的信号?

例如,使用以下的混合矩阵时:

A = 

0.2000 0.4267 0.2133 0.1067 0.0533 
0.2909 0.2000 0.2909 0.1455 0.0727 
0.1333 0.2667 0.2000 0.2667 0.1333 
0.0727 0.1455 0.2909 0.2000 0.2909 
0.0533 0.1067 0.2133 0.4267 0.2000 

的特征值是:0.0000 0.0005 0.0022 0.0042 0.0345(!只有4)

当使用单位矩阵作为混合矩阵(即,混合的信号是与原始的一样),特征谱是:0.0103 0.0199 0.0330 0.0811 0.1762。还有一个值比其他值大得多..

谢谢你的帮助。

我很抱歉,如果我的问题的答案是痛苦的明显,但我真的是新统计,ICA和Matlab。再次感谢。

编辑 -我有500个样本的每个信号,范围[0.2,100],步长为0.2,即x = 0:0.1:100

编辑 -鉴于ICA型号:X =作为+ N(我不加入此刻任何噪音),但我指的是X的转置的eigenspectrum,即eig(cov(X'))

回答

0

要找到信号是否相互独立,您可以查看描述的技术here通常,如果两个随机变量是正交的,则它们是独立的。这意味着:E {s1 * s2} = 0意味着随机变量s1的期望值乘以随机变量s2为零。这种正交性条件在统计和概率方面非常重要,并且随处可见。不幸的是,它一次适用于2个变量。有多变量的技术,但我觉得不舒服的建议。我挖掘的另一个链接是这one,不知道你的应用程序是什么,但该文件是非常做得好。

当我计算的协方差矩阵获得:

cov(A) = 
0.0619 -0.0284 -0.0002 -0.0028 -0.0010 
-0.0284 0.0393 0.0049 0.0007 -0.0026 
-0.0002 0.0049 0.1259 0.0001 -0.0682 
-0.0028 0.0007 0.0001 0.0099 -0.0012 
-0.0010 -0.0026 -0.0682 -0.0012 0.0831 

随着特征向量,V和值D

[V,D] = eig(cov(A)) 

V = 

-0.0871 0.5534 0.0268 -0.8279 0.0063 
-0.0592 0.8264 -0.0007 0.5584 -0.0415 
-0.0166 -0.0352 0.5914 -0.0087 -0.8054 
-0.9937 -0.0973 -0.0400 0.0382 -0.0050 
-0.0343 0.0033 0.8050 0.0364 0.5912 
D = 
0.0097   0   0   0   0 
    0 0.0200   0   0   0 
    0   0 0.0330   0   0 
    0   0   0 0.0812   0 
    0   0   0   0 0.1762 

这里是我的代码:

x = transpose(0.2:0.2:100); 
s1 = (-x.^2 + 100*x + 500)/3000; % quadratic 
s2 = exp(-x/10); % -ve exponential 
s3 = (sin(x)+ 1) * 0.5; % sine 
s4 = 0.5 + 0.1 * randn(length(x), 1); % gaussian 
s5 = (sawtooth(x, 0.75)+ 1) * 0.5; % sawtooth 
A = [s1 s2 s3 s4 s5]; 
cov(A) 
[V,D] = eig(cov(A)) 

让我知道如果我可以再帮忙,或者如果我误解了。

编辑正确地指代特征值和向量,使用0.2个采样间隔添加代码。

+0

我用x = 0.2:0.2:100(我刚刚把这个细节加到了我原来的问题 - 谢谢指出。)你是如何到达协方差矩阵的?我在问题中发布的混合矩阵A的协方差矩阵是不同的。另外,使用eig(cov(A))给出矩阵的特征值,而不是特征向量。除此之外,我并不是指A的协方差矩阵的特征值,而是指混合信号的协方差矩阵的特征值。我将这个添加到我的问题中,使其更清晰。 – Rachel 2012-02-21 19:29:32

+0

哦,谢谢你的链接,但你可以请进一步解释吗?就像我说的,我是一个统计新手。我想知道是否有一种常用的方法来检查一些信号是否具有统计独立性。 – Rachel 2012-02-21 19:31:23

+0

谢谢您的评论,但是,它并没有真正让我获得任何地方。我的问题不是计算特征值,而是更多的为什么特征值是他们是什么..你可以看到,其中一个特征值相对较大。我认为对统计独立的信号来说,特征值或多或少是相等的,我想知道这是否正确。另外我还没有找到具体的方法来检查我的信号是否独立。 – Rachel 2012-02-22 11:37:32

1

你的信号是相关的(不是独立的)。就在蝙蝠,锯齿和正弦是同一时期。告诉我一个价值,我会告诉你其他完美关联的价值。

如果你改变了其中一个让他们更独立的时期。

S1和S2也有相关性。

至于特征值,首先你的信号不是独立的(见上文)。

其次,你的过滤矩阵A也没有很好的条件,进一步扩展你的特征值。

即使你是管五个完全独立(独立同分布的,内容十分重要)信号的协方差为:

E[ A y y' A' ] = E[ A I A' ] = A A' 

特征值即是:

eig(A*A') 
ans = 

    0.000167972216475 
    0.025688510850262 
    0.035666735304024 
    0.148813869149738 
    1.042451912479502 

所以你真正地将所有信号滤波/压缩到一个基本函数/自由度上,当然,无论使用什么方法,它们都很难恢复。

+0

感谢您的评论@Nate。我有一些问题,如果你不介意的话。首先,“五个完全独立的(iid,yada yada)信号”意味着什么。你怎么知道信号是否确实是独立的?什么是(iid,yada,yada)? – Rachel 2012-03-30 10:17:19