2011-03-05 6 views

Répondre

12

Je suis un peu confus. FastICA, que vous mentionnez, implémente l'algorithme du point fixe rapide dans MATLAB. Donc, ce serait votre réponse alors?

EDIT: Le code FastICA est assez facile à utiliser. La seule entrée dont il a besoin est un signal mixte qu'il essaie ensuite de démixer. Vous pouvez également lui donner des entrées supplémentaires, comme faire PCA, etc. La principale difficulté est de créer le signal mixte, qui doit être une matrice nx N, avec n étant le nombre d'observations et N le longueur du signal.

Voici un exemple qui crée d'abord un signal avec 4 observations, puis mélange ce signal en le multipliant avec un signal aléatoire, et utilise finalement ICA sur le signal mixte pour essayer de récupérer le signal original.

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); 
bien
+0

, si vous avez un exemple vous avez répondu très bien – cMinor

+0

@darkminor: Est-ce ok? – Ghaul