1

我需要生成一个具有高斯分布的矩阵(值主要从 -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(独立分量分析)快速不动点算法,它提到FastICA需要连续的每个信号。

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

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

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

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

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

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

4

1 回答 1

0

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

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

于 2011-12-17T14:21:44.657 回答