我目前正在使用 Matlab 创建不同的信号,通过将它们乘以混合矩阵 A 来混合它们,然后尝试使用FastICA取回原始信号。
到目前为止,与原始信号相比,恢复的信号非常糟糕,这不是我所期望的。
我想看看我是否做错了什么。我生成的信号如下:
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 成功的一个条件是至多一个信号是高斯信号,我在信号生成中观察到了这一点。
然而,另一个条件是所有信号在统计上都是独立的。
我所知道的是,这意味着,给定两个信号 A 和 B,知道一个信号不会提供关于另一个信号的任何信息,即: P(A|B) = P(A)其中 P 是概率。
现在我的问题是:我的信号在统计上是独立的吗?有什么办法可以确定吗?也许一些必须遵守的属性?
我注意到的另一件事是,当我计算协方差矩阵的特征值(针对包含混合信号的矩阵计算)时,特征谱似乎表明只有一个(主要)主成分。这到底是什么意思?不应该有 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 = As + n(我现在没有添加任何噪声),我指的是 X 的转置的特征谱,即 eig(cov(X'))。
更新
按照建议(请参阅评论),我仅在 2 个信号上尝试了FastICA 。结果非常好(见下图)。使用的混合矩阵是A = [0.75 0.25; 0.25 0.75]
. 然而,特征谱 0.1657 0.7732
仍然只显示一个主要的主成分。
因此,我的问题归结为以下几点:我可以使用什么函数/方程/属性来检查多个信号向量在统计上是否独立?