⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ica_6.m

📁 盲信号处理牛人cardoso
💻 M
字号:
echo off; 
clear all;  
close all;
format long;

NT=2;
NG=20000;
L=20;
NN=NG+NT;
N=6;     
M=6;     
T=0.0001; 
NNN=T*(1:NN);
snr1=sqrt(0.);
arfa=0.995;
  
% five deterministic sub-Gaussian signals
s1=sign(cos(2*pi*155*NNN));  
s2=sin(2*pi*800*NNN);
s3=sin(2*pi*90*NNN);
s4=sin(2*pi*10*NNN).*sin(2*pi*300*NNN);
s5=sin(2*pi*300*NNN+6*cos(2*pi*60*NNN)); 
% one random over-Gaussian signal 
ar1=5/20;
hh=zeros(L,1);
for n1=1:L
    a1=n1*ar1;
    hh(n1)=randn*exp(-a1);
end    
NN1=NN+L-1
nh=1-2*rand(1,NN1); 
for n1=1:NN1       
    if nh(n1)>0
        nh(n1)=-log(nh(n1));
    end
    if nh(n1)<0        
        nh(n1)=log(-nh(n1));
    end
end
for n1=1:NN
    nj(n1)=nh(n1:n1+L-1)*hh;
end
nj=1-2*rand(1,NN); 
S=[s1;s2;s3;s4;s5;nj]; 
clear s1; clear s2; clear s3; clear s4; clear s5; clear n;
% 100 independent runs are executed
for kkk=1:1;   kkk,    
    % A is randomly generated in each run
    A=(1-2*rand(M,N));       
    X=A*S;
    Xn=randn(M,NN);
    aa1=snr1*norm(X,'fro')/norm(Xn,'fro');
    Xn=aa1*Xn;
    X=X+Xn;        
    W1=eye(M);
    W2=W1;
    W3=W1;
    W4=W1;
    Sest1=zeros(M,NN);
    R=zeros(M,M);
    arpha=0.99;

    for i1=1:NG          
        % the Yong algorithm A' 
        if i1<=600   eta1=120*T; 
        else eta1=120*T*exp(-15*T*(i1-600));
        end 
        eta1=0.005;
        if i1<=600   MU=60; 
        else MU=60*exp(-15*T*(i1-600));
        end 
        MU=60;
        %------------ Natural Gradient -------------------- 
        eta6=0.001;
        x1=X(:,i1); 
        x2=X(:,i1+NT);      
        Y1=W1*x1;         
        Sest1(:,i1)=Y1;
        if  i1==1;  
            K3=Y1.^3;
            K4=Y1.^4-3;
        else
            K3=K3-MU*T*(K3-Y1.^3);
            K4=K4-MU*T*(K4-Y1.^4+3);
        end   
        f=-0.5*K3+2.25*K3.*K4;
        g=-1/6*K4+1.5*K3.^2+0.75*K4.^2;       
      
        mat1=Y1.^3*Y1';              
        W1=W1+3*eta6*(eye(M)-mat1)*W1;
        P1EFF(kkk,i1)=Eff(W1*A);
        %---------------- Relative Gradient-------------------
        eta2=eta1/1.5;
        Y1=W2*x1; 
        Y2=W2*x2;        
        mat1=Y1.^3*Y1'; 
        %mat1=Y2*Y1';                             
        W2=W2+((eye(M)-Y1*Y1')-mat1+mat1')*W2*(eta6);            
        P2EFF(kkk,i1)=Eff(W2*A); 
        %---------------- New 1 -----------------------------
        if i1>1
            a1=1/i1;          
            R=R+(X(:,i1)*X(:,i1)'-R)*a1;
        else
            R=X(:,i1)*X(:,i1)';
        end
        B1=R^(-0.5);         
        z1=B1*x1;
        z2=B1*x2;        
      
        eta3=0.001;        
        Aj=W3*W3';
        %Aj=zeros(N,N);
        Y1=W3*z1; 
        Y2=W3*z2;          
        mat1=Y1.^3*Y1';
        %mat1=Y2*Y1';                           
        W3=W3+( -mat1+mat1')*W3*(eta3);  %   (eye(M)-Aj)
        P3EFF(kkk,i1)=Eff(W3*B1*A);       
        tx(kkk,i1)=i1;
        %---------------- New N -----------------------------
        Y1=W4*z1;
        mat1=Y1.^3*Y1';              
        W4=W4+3*eta6*(eye(M)-mat1)*W4;
        P4EFF(kkk,i1)=Eff(W4*B1*A);
        
   end    

   figure;  grid off;    hold on;    
   plot(tx,10*log10(P1EFF(kkk,:)),'b',tx,10*log10(P2EFF(kkk,:)),'r',tx,10*log10(P3EFF(kkk,:)),'g',tx,10*log10(P4EFF(kkk,:)),'y');
   
end  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -