www.pudn.com > tuxingfenlifg.rar > tuxingfenlifg.m


function mixedimage(I1,I2, I3) 
 
K=4; 
N=100; 
k=1:N; 
I1=rand(1,N); 
I2=square(2*pi*k/8); 
I3=sin(2*pi*k/32); 
 
s1=reshape(I1); 
s2=reshape(I2); 
s3=reshape(I3); 
s=[s1;s2;s3]; 
sig=double(s); 
Aorig=rand(size(sig,1)); 
mixedsig=Aorig*sig; 
ms1=reshape(mixedsig(1,:),[256,256]); 
ms2=reshape(mixedsig(2,:),[256,256]); 
ms3=reshape(mixedsig(3,:),[256,256]); 
MI1=uint8(round(ms1)); 
MI2=uint8(round(ms2)); 
MI3=uint8(round(ms3)); 
subplot(321),imshow(MI1),subplot(322),imshow(MI2),subplot(323),imshow(MI3) 
omixedsig=zeros(size(mixedsig)); 
mixedmean=mean(mixedsig')'; 
mixedsig=mixedsig-mixedmean*ones(1,size(omixedsig,2)); 
covarianceMatrix=cov(mixedsig',1); 
[E,D]=eig(covarianceMatrix); 
eigenvalues=flipud(sort(diag(D))); 
whiteningMatrix=inv(sqrt(D))*E'; 
dewhiteningMatrix=E*sqrt(D); 
whitesig=whiteningMatrix*mixedsig; 
X=whitesig; 
[vectorsize,numsamples]=size(X); 
B=zeros(vectorsize); 
numOFIC=vectorsize; 
for r=1:numOFIC 
i=1;maxnumiterations=50; 
w=rand(vectorsize,1)-0.5; 
w=w/norm(w); 
while i<=maxnumiterations+1 
    w=w-B*B'*w; 
    w=w/norm(w); 
    w=(X*((X'*w).^3))/numsamples-3*w; 
    w=w/norm(w); 
    i=i+1; 
end 
A(:,r)=dewhiteningMatrix*w; 
W(r,:)=w'*whiteningMatrix; 
B(:,r)=w; 
end 
icasig=W*mixedsig+(W*mixedmean)*ones(1,numsamples); 
icasig=abs(50*icasig); 
Is1=reshape(icasig(1,:),[256,256]); 
Is2=reshape(icasig(2,:),[256,256]); 
Is3=reshape(icasig(3,:),[256,256]); 
II1=uint8(round(Is1)); 
II2=uint8(round(Is2)); 
II3=uint8(round(Is3)); 
subplot(324),imshow(II1),subplot(325),imshow(II2),subplot(326),imshow(II3)