Алгоритм быстрого фиксированного вычисления ICA (независимый компонентный анализ) - PullRequest
0 голосов
/ 05 марта 2011

Существует несколько алгоритмов ICA. Например, алгоритм Fast-ICA, разработанный Jyh-Shing и Roger Jang, называется алгоритмом с быстрой фиксированной точкой. Знаете ли вы, если есть реализация или пример, использующий этот алгоритм, может быть, MATLAB?

1 Ответ

12 голосов
/ 06 марта 2011

Я немного растерялся. 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);
...