www.pudn.com > ln.rar > mainp1.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(5,1,1)
plot(s0)
subplot(5,1,2)
plot(s1)
subplot(5,1,3)
plot(s2)
subplot(5,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=20;%%%%%-----length of the linear predicor
%b=rand(1,P)'-0.5;%%%------------linear predictor coefficient vector----------
b=rand(1,P)'-0.03*ones(1,P)';
%%%%%%%%%%%%%%--------------update the weight vector---------------------
mu=0.4%%%%%%%%%%%%-------learn stepsize---
w=rand(m,1);
wold=w;
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
hatx=zeros(m,1);
forj=1:P
e=y(i)-b'*Y;
hatx=x1(i)-(b*X');
w=wold-mu*e*hatx;
w=w/norm(w);
wold=w;
end
display('the demixing vector is:')
w
subplot(5,1,5)
plot(y)
display('the global demixing vector is:')
w'*WhitenMatrix*A