我需要生成一个具有高斯分布的矩阵(值主要从-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()函数的输入。
我的问题是:是否可以直接向FastICA提供2D数据?如果您的图像中包含许多混合信号并希望将其提供给ICA以便它可以找到独立组件,该怎么办?
指向如何在不同输入上使用FastICA的教程链接非常有用。
提前感谢任何阅读此帖并试图提供帮助的人。抱歉这个冗长的问题,我想确保它得到很好的理解!
答案 0 :(得分:0)
你如何创建混合信号? FastICA将尝试估计您用于混合的矩阵(原始组件)。只要您有足够数量的观测值(信号),FastICA就可以混合任意数量的混合信号。请参阅您所链接的答案,四个信号正在混合和分解。
您放入FastICA的数据已经是2D(m x n),只是塑造成另一个尺寸(1 x mn)。