www.pudn.com > ln.rar > mainp1test2.asv


 
clear;clc;close all; 
 
display('This program is for the paper titled:A class of novel blind source extraction algorithms based on a linear predictor') 
display('for the whitened case and updated by the eqn.(21)') 
load ABio7 
sig=benchcicbar; 
s0=sig(2,:);s1=sig(3,:); 
s2=sig(4,:);s3=sig(5,:); 
%%%%%%%%%%------beginning of fiuring the source signal-----%%%%%%%%% 
figure 
subplot(6,1,1)    
plot(s0) 
subplot(6,1,2)    
plot(s1) 
subplot(6,1,3)   
plot(s2) 
subplot(6,1,4)    
plot(s3) 
 
%%%%%%%%%%------end of fiuring the source signal-----%%%%%%%%% 
A=[-0.9370 0.9448 0.3651 -0.2617; 
    -0.8263 -0.3478 -0.2872 0.6279; 
    0.3730 0.1975 0.9953 0.8325; 
    0.8955 0.3578 0.5649 0.6257]; 
s=[s0;s1;s2;s3]; 
x=A*s; 
 
%%%%%%%%  whiten the mixed signal 
covarianceMatrix=cov(x',1);     % 产生协方差阵 
[E,D]=eig(covarianceMatrix);           % 求出协方差的特征向量和特征值 
 
[x1,WhitenMatrix]=whitenSig(x,E,D);     % 对信号进行白化 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
 
[m,n]=size(x1); 
P=2;%%%%%-----length of the linear predicor 
%b=rand(1,P)'-0.5;%%%------------linear predictor coefficient vector---------- 
b=rand(1,P)'-0.5*ones(1,P)'; 
%%%%%%%%%%%%%%--------------update the weight vector--------------------- 
mu=0.4%%%%%%%%%%%%-------learn stepsize--- 
w=rand(m,1); 
wold=w; 
Q=10*eye(P); 
 
E=[]; 
for i=P+1:n 
    y=w'*x1; 
    Y=[]; 
    X=[]; 
    for j=1:P 
        Y=[Y;y(i-j)]; 
        X=[X,x1(:,i-j)]; 
    end 
    K=Q*Y*inv(Y'*Q*Y+1); 
    v=y(i)-Y'*b; 
    b=b+K*v; 
    Q=Q-K*Y'*Q; 
    hatx=zeros(m,1); 
    for j=1:P 
        hatx=hatx+b(j)*X(:,j); 
    end 
    hatx=x1(i)-hatx;      
    e=y(i)-b'*Y; 
    E=[E,e]; 
    w=wold-mu*e*hatx;   
    w=w/norm(w); 
 
    wold=w; 
end 
 
 
 
display('the demixing vector is:') 
w 
subplot(6,1,5) 
plot(y) 
subplot(6,1,6) 
plot(E) 
display('the global demixing vector is:') 
w'*WhitenMatrix*A 
display('the linear predictor coefficient is:') 
b