%对混合仿真信号去均值处理
mixedsig_mean=zeros(3,1);
for i=1:3
mixedsig_mean(i)=mean(mixedsig(i,:));
end
for i=1:3
for j=1:size(mixedsig,2)
mixedsig(i,j)=mixedsig(i,j)-mixedsig_mean(i);
end
end
mixdesig_cov = cov(mixedsig');
[E,D] = eig(mixdesig_cov);
Q=inv(sqrt(D))*(E)';
mixedsig_white=Q*mixedsig;
ISI=cov(mixedsig_white');
X = mixedsig_white;
[VariableNum,SampleNum] = size(X);
numofIC = VariableNum;
W = zeros(numofIC,VariableNum);
for r=1:numofIC
i = 1;maxIterationsNum = 150;
w=2*(rand(numofIC,1)-.5);
w = w/norm(w);
while i<= maxIterationsNum+1
if i == maxIterationsNum
break;
end
wOld=w;
u=1;
t=X'*w;
g=t.^3;
dg=3*t.^2;
w=((1-u)*t'*g*w+u*X*g)/SampleNum-mean(dg)*w;
w=w-W*W'*w;
w=w/norm(w);
if abs(abs(w'*wOld)-1)<1e-9
W(:,r)=w;
break;
end
i=i+1;
end
end
icaS=W'*Q*mixedsig_bak;
icaS_bak=icaS;
icaS=abs(55*icaS);