clear all;
x1(1,:)=(wavread('mix1.wav'))';x1(2,:)=(wavread('mix2.wav'))';
x1(3,:)=(wavread('mix3.wav'))';
N=size(x1,1); % Row size 112*92 of PCA Input Variable;
P=size(x1,2);
mb=mean(x1');B1=x1-mb'*ones(1,P);%********subtract mean
c=cov(B1');wz=2*inv(sqrtm(c));x=wz*B1;
w=eye(N,N); % init. unmixing matrix, or w=rand(M,N);
M=N; % M=N usually
Id=eye(M);
%mx=mean(x1');x=x1-(ones(P,1)*mx)';
L=0.005;
for sweep=1:100
t=1;
for t=1:P,
u=w*x(:,t);
w=w+L*(Id+(1-2*(1./(1+exp(-u))))*u')*w;
end;
end
w1=w*wz; % basis function without orthognizing
y=w1*x1;
m1=max(y(1,:));m2=min(y(1,:));y(1,:)=(y(1,:)-m2)/(m1-m2);
m1=max(y(2,:));m2=min(y(2,:));y(2,:)=(y(2,:)-m2)/(m1-m2);
m1=max(y(3,:));m2=min(y(3,:));y(3,:)=(y(3,:)-m2)/(m1-m2);
y=(y-0.5)*2;
wavwrite(y(1,:),'sep1.wav');wavwrite(y(2,:),'sep2.wav');wavwrite(y(3,:),'sep3.wav');