You are on page 1of 2

clc

clear all
numberOfRepeats = 1;
sigmanu2 = 10 ^ ( -3 );
beta = 10 ^ ( -3 );
kappaVector
=
1 ] * 10^(-6);
rhoVector
= 5
1 ];
betaKappaVector =
10^(-7) ]; % 10^(-8) - 10^(-6)
betaRhoVector
=
0 ] ;
lambda = 0;

[ 0 1

[ 1 1

[ 0 0

5*10^(-9)

10^(-8)

[ 0 0

Samples = 20000;
h = transp( modelos( 4 ) );
h = [ h ; zeros( 512 , 1 ) ];
N = length( h );
numberOfAlgorithms = length( rhoVector );
MSD = zeros( Samples - N + 1 , numberOfAlgorithms );
for repeat = 1 : numberOfRepeats,

x = randn( Samples , 1 );
x = filter( 1 , [1 -.8] , x );
d = filter( h , 1 , x );
d = d + sqrt( sigmanu2 ) * randn( size( x ) );
for algorithm = 1 : numberOfAlgorithms,
rho = rhoVector( algorithm );
kappa = kappaVector( algorithm );
wk = zeros( N , 1 );
for k = N : Samples,
xk = x( k : -1 : k - N + 1 );
yk = wk' * xk;
ek = d( k ) - wk' * xk;
wk = wk + beta * xk * ek - kappa * frho( wk , rho );

MSD( k - N + 1 , algorithm ) = MSD( k - N + 1 , algorithm ) +


( norm( wk - h ) ^ 2 ) / numberOfRepeats;
epk = d( k ) - wk' * xk;
if k == N
gradKappa = 2 * epk * transp( frho( wk , rho ) ) * xk;

gradRho = 2 * kappa * epk * sum( dfrho( wk , rho ) .* xk


);
else
gradKappa = lambda * gradKappa + ( 1 - lambda ) * 2 * epk
* transp( frho( wk , rho ) ) * xk;
gradRho = lambda * gradRho + ( 1 - lambda ) * 2 * kappa *
epk * sum( dfrho( wk , rho ) .* xk );
end
kappa = kappa - betaKappaVector( algorithm ) * gradKappa;
kappa = max( [ 10^(-8) kappa ] );
rho = rho - betaRhoVector( algorithm ) * gradRho;
rho = max( [ 10^(-8) rho ] );

end
disp( [ 'Algorithm ' num2str( algorithm ) ] )
rho
kappa
end
end

cor{
cor{
cor{
cor{
cor{
cor{

1
2
3
4
5
6

}
}
}
}
}
}

=
=
=
=
=
=

'r';
'g';
'b';
'k';
'c';
'm';

set( figure , 'Color' , 'w' )


for algorithm = 1 : numberOfAlgorithms,
plot( [ 1 : size( MSD , 1 ) ] , 10 * log10( MSD( : , algorithm ) ) ,
cor{ algorithm } , 'LineWidth' , 2 )
legenda{ algorithm } = [' \rho = ' num2str( rhoVector( algorithm ) )
' - \kappa = ' num2str( kappaVector( algorithm ) ) ' - \beta_\rho = '
num2str( betaRhoVector( algorithm ) ) ' - \beta_\kappa = ' num2str(
betaKappaVector( algorithm ) ) ];
hold on
end
axis tight
grid on
set( gca , 'FontSize' , 15 )
xlabel('Iteration number')
ylabel('MSD (dB)')
legend( legenda )

You might also like