www.pudn.com > ln.rar > b_20_noisy_free.m


clc;clear
load ABio7.mat;
%%LP的阶数P=20;
P=2;
N=length(benchcicbar);

b=[0.35 0.89];  %%neng ti qu chu ,buguo you zaosheng.
%b=randn(1,P);
for i=2:5
    figure(1);
    s(i-1,:)=benchcicbar(i,:);
    subplot(4,1,i-1);plot(s(i-1,:)); 
    %%calculate the NMSPE:
    for j=1:P
        sum=0;
        %temp=s(i-1,[zeros(1,j) length(benchcicbar)-j]);
        dz(i-1,:)=[zeros(1,j) s(i-1,1:(N-j))];
        sum=sum+b(j)*dz(i-1,:);
    end    
    e(i-1,:)=s(i-1,:)-sum;
    
    eMSPE(i-1)=mean(e(i-1,:)*e(i-1,:)');
    eNMSPE(i-1)=mean(e(i-1,:)*e(i-1,:)')/mean(s(i-1,:)*s(i-1,:)');
end;    

%%mixing matrix:A
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];

X=A*s;    %%% 观测信号X;四个
for i=1:4
    figure(2);
    subplot(4,1,i);plot(X(i,:));title('观测信号X(i)');  %%.....
end;    

%%%进行BSE。
for i=1:4
    for j=1:2
        sum=0;
        dX(i,:)=[zeros(1,j) X(i,1:(N-j))];
        sum_X=sum+b(j)*dX(i,:);
    end    
    e_X(i,:)=X(i,:)-sum_X;
end; 
%%%首先是没有进行白化的BSE
    w=ones(1,4)';
    w=w/norm(w);
    y(1)=w'*X(:,1); %%........
    y(2)=w'*X(:,2); %%........
    y(3)=w'*X(:,3); %%........
    
for k=3:N
    y(k)=w'*X(:,k); 
    miu=0.00025;    
    e(k)=y(k)-b(1)*y(k-1) - b(2)*y(k-2);
    
    belta_e=0.98;
    belta_y=0.98;
    sigma_e2=0.02;
    sigma_y2=0.02;
    sigma_e2=belta_e*sigma_e2+(1-belta_e)*(e(k)^2);
    sigma_y2=belta_y*sigma_y2+(1-belta_y)*(y(k)^2);
    
    w=w-miu*(e(k)*e_X(:,k)-sigma_e2*y(k)*X(:,k)/sigma_y2)/sigma_y2;
    w=w/norm(w);
end; 

y=w'*X;
w'*A
figure(4);
subplot(411),plot(y);title('the extracted signal wihtout whiten');
subplot(412),plot(s(4,:));title('the source signal');


%%%%%进行白化后的BSE
%%白化
for i=1:4
    X(i,:)=X(i,:)-mean(X(i,:));
end;  
%[U0,S0,V0]=svd(X);    
%[U1,S1,V1]=svd(X*X');
%X=S1^(-1/2)*U0'*X;

[E,D]=eig(X*X');
X=D^(-1/2)*E'*X;   %%与上一样。

for i=1:4
    for j=1:2
        sum=0;
        dX(i,:)=[zeros(1,j) X(i,1:(N-j))];
        sum_X(i,:)=sum+b(j)*dX(i,:);
    end    
    e_X(i,:)=X(i,:)-sum_X(i,:);
end; 

    w=ones(1,4)';
    w=w/norm(w);
    y(1)=w'*X(:,1); %%........
    y(2)=w'*X(:,2); %%........
    y(3)=w'*X(:,3); %%........
    
for k=3:N
    y(k)=w'*X(:,k);     
    e(k)=y(k)-b(1)*y(k-1)-b(2)*y(k-2);
    miu2=0.4;
    w=w-miu2*e(k)*e_X(:,k);
    w=w/norm(w);
    %w=w/sqrt(w'*(eye(4)-sigma_v2*D^(-1/2)*E'*E*(D^(-1/2))')*w);
end;    
%y=w'*X;

figure(5);
subplot(411),plot(y);title('the extracted signal with whiten');
subplot(412),plot(s(4,:));title('the source signal_4');
subplot(413),plot(s(3,:));title('the source signal_3');