There are several ICA algorithms in use. Such as Fast-ICA algorithm, there is one developed by Jyh-Shing and Roger Jang called a fast-fixed point algorithm. Do you know if there is an implementation or an example using this algorithm, maybe MATLAB?
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
I'm a bit confused. FastICA, which you mention, implements the fast-fixed point algorithm in MATLAB. So that would be your answer then?
EDIT: The FastICA code is pretty easy to use. The only input it needs is a mixed signal, which it then tries to unmix. You can also give it additional inputs, like doing PCA, etc.. The main difficulty is in creating the mixed signal, which needs to be a n x N matrix, with n being the number of observations and N the length of the signal.
Here is an example that first creates one signal with 4 observations, then mixes that signal by multiplying it with a random signal, and finally uses ICA on the mixed signal to try to recover the orignal signal.
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);