【发布时间】:2011-07-09 13:02:23
【问题描述】:
有几种 ICA 算法正在使用中。比如 Fast-ICA 算法,有一种由 Jyh-Shing 和 Roger Jang 开发的称为快速不动点算法。 不知道有没有使用这个算法的实现或者例子,也许是MATLAB?
【问题讨论】:
标签: matlab artificial-intelligence machine-learning
有几种 ICA 算法正在使用中。比如 Fast-ICA 算法,有一种由 Jyh-Shing 和 Roger Jang 开发的称为快速不动点算法。 不知道有没有使用这个算法的实现或者例子,也许是MATLAB?
【问题讨论】:
标签: matlab artificial-intelligence machine-learning
我有点困惑。你提到的FastICA在MATLAB中实现了快速不动点算法。那么这就是你的答案?
编辑:FastICA 代码非常易于使用。它需要的唯一输入是混合信号,然后它会尝试将其解混。你也可以给它额外的输入,比如做PCA等。主要的难点在于创建混合信号,它需要是一个nx N矩阵,带有n是观察次数,N 是信号的长度。
这是一个示例,首先创建一个具有 4 个观测值的信号,然后通过将该信号与随机信号相乘来混合该信号,最后在混合信号上使用 ICA 来尝试恢复原始信号。
N=500; %data size
v=[0:N-1];
sig(1,:)=sin(v/2); %sinusoid
sig(2,:)=((rem(v,23)-11)/9).^5; %funny curve
sig(3,:)=((rem(v,27)-13)/9); %saw-tooth
sig(4,:)=((rand(1,N)<.5)*2-1).*log(rand(1,N)); %impulsive noise
%create mixtures
Aorig=rand(size(sig,1));
mixedsig=(Aorig*sig);
%preform ica to unmix signal
ica = fastica(mixedsig);
【讨论】: