📄 ffpica.m
字号:
%function ffpICAout27=ffpICAnalysis(finalout1327,max_iteration,epsilon)
%Fast Fixed-Point Independent Component Analysis
[num_IC,num_sample]=size(finalout1327);
max_iteration=100;
epsilon=0.0001;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%第一步:零均值化(whitening)
tempaverage=mean(finalout1327')';
finaloutzeroaverage1327=finalout1327-tempaverage*ones(1,size(finalout1327,2));
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%第二步:球化(sphering)
covariancematrix1313=cov(finaloutzeroaverage1327');
%con(X),where if X is a matrices,each row of which is an observation and each column a variable
%注意:这个命令最后除的是observation数减一。
[eigenvectors13,eigenvaluesdiag13]=eig(covariancematrix1313);%eigenvectors13的每一列为一个eigenvector
whitening_matrix=inv(sqrt(eigenvaluesdiag13))*eigenvectors13';
whitened_finaloutzeroaverage1327=whitening_matrix*finaloutzeroaverage1327;%whitened(or sphered)signals
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%第三步:calculate the ICA using the fixed point Algorithm
B=zeros(num_IC);
for ii=1:num_IC
w=rand(num_IC,1)-0.5;%Initialize the weight vector
%The rand function generates arrays of random numbers whose elements are uniformly distributed in the interval (0,1).
w=w-B*B'*w;%To ensure that different independent components are estimated each time.
w=w/norm(w);
w_old=zeros(size(w));%size(w)返回矩阵w的行和列。
for jj=1:max_iteration
w=w-B*B'*w;
w=w/norm(w);
if norm(w-w_old) < epsilon | norm(w+w_old) < epsilon
B(:,ii)=w;
W(ii,:)=w'*whitening_matrix;
break;
end
%Let w(j)=E[v(w'(j-1)v)^3]-3w(j-1)
w_old=w;
u=whitened_finaloutzeroaverage1327'*w;
w=(whitened_finaloutzeroaverage1327*(u.^3))/num_sample-3*w;
end
end
ffpICAout27=W*finalout1327;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -