【问题标题】:Using FastICA in Matlab to separate a mixture of Gaussian and Poisson matrices在 Matlab 中使用 FastICA 分离高斯和泊松矩阵的混合
【发布时间】:2012-01-22 13:32:19
【问题描述】:

我需要生成一个具有高斯分布的矩阵(值主要分布在 -5 到 5 之间)、一个泊松矩阵,将它们混合并将它们作为输入提供给 Matlab FastICA

我是 Matlab、发行版和 ICA 的新手,所以一些建议会很有帮助。我一直在努力,但不知道我是否走在正确的轨道上。

为了生成高斯和泊松矩阵,我生成了两个数组:

s2 = poissrnd(2, 1, 40000); %Poisson distribution with lambda 2
s1 = rand(size(s2)) * 10 - 5; %Gaussian distribution and values ranging from -5 to 5

然后我使用reshape 函数生成两个 200x200 矩阵。使用image 时,我得到以下图像:

我的第一个问题是:这是在 Matlab 中生成高斯和泊松矩阵的正确方法吗?或者是否有一些内置函数可以实际生成矩阵,而不必生成和重塑数组?

现在,第二个问题:使用FastICA

参考一个很好的答案:ICA (Independent Component Analysis) fast-fixed point algorithm,它提到 FastICA 需要连续的每个信号。

因此,我通过以下方式生成信号矩阵:

S(1,:) = s1; %row 1
S(2,:) = s2; %row 2

然后我生成一个混合矩阵,添加一些噪声,并将生成的矩阵作为 fastica() 函数的输入。

我的问题是:是否可以将 2D 数据直接提供给 FastICA?如果您有一个包含许多混合信号的图像并想将其提供给 ICA 以便它可以找到独立分量怎么办?

解释如何在不同输入上使用 FastICA 的教程链接将非常有帮助。

提前感谢所有阅读这篇文章并试图提供帮助的人。很抱歉这个冗长的问题,我想确保它被很好理解!

【问题讨论】:

    标签: matlab gaussian poisson


    【解决方案1】:

    如何创建混合信号? FastICA 将尝试估计您用于混合的矩阵(原始组件)。只要您有足够数量的观测(信号)测量值,FastICA 就可以分解任意数量的混合信号。看,在您链接到的答案中,四个信号正在混合和分解。

    您放入 FastICA 的数据已经是 2D (m x n),只是成形为另一个大小 (1 x mn)。

    【讨论】:

    • 我生成一个随机的 2x2 矩阵 (A),然后使用 X = A * S 来混合信号。然后我使用命令 ica = fastica(X) 并得到一个 2 * 40000 矩阵。如果我理解正确的话,ica 矩阵的每一行都应该对应一个原始矩阵。这是正确的吗?
    • 没有。您的第一种方法是正确的(2x2 矩阵)。 M = 兰特(200)* s1M + 兰特(200)* s2M;不是这样做的方法。您需要了解 ICA 的工作原理。如果您想成功分离两个信号,您将需要提供至少两个测量值。您通过计算 X = A * S 人为地生成这些测量值。从 ICA (2 * 40000) 获得的结果应该是您想要的(将行重新整形为 200 x 200)。如果您只对估计的 A 感兴趣,请使用 [A, ~] = FASTICA (X)。
    • 关于分布:我认为对于泊松,你做得对。然而,对于高斯,使用 rand 是不正确的,因为它假设均匀分布(非正态分布)。所以你需要考虑均值和方差来产生高斯噪声(sqrt(variance) * rand() + mean in pseudo code)
    • 假设平均值为 0。randn() * 5:[-5,5] 中值的 68%,randn() * 10:[-5,5] 中 95%,randn() * 15:在 [-5,5] 中为 99,7%。
    • 是的,你是对的,对不起。 3 * sigma 应该等于 5。所以 5/3 * randn() 在 [-5,5] 中给出 99.7%。
    猜你喜欢
    • 2019-01-04
    • 1970-01-01
    • 2014-01-14
    • 1970-01-01
    • 1970-01-01
    • 2018-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多