2
clc clear all numberOfRepeats = 1; sigmanu2 = 10 ^ ( -3 ); beta = 10 ^ ( -3 ); kappaVector = [ 0 1 1 1 1 ] * 10^(-6); rhoVector = 5 * [ 1 1 1 1 1 ]; betaKappaVector = [ 0 0 5*10^(-9) 10^(-8) 10^(-7) ]; % 10^(-8) - 10^(-6) betaRhoVector = [ 0 0 0 0 0 ] ; lambda = 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;  

codmatlab

Embed Size (px)

DESCRIPTION

codigo matlab

Citation preview

Page 1: codmatlab

7/17/2019 codmatlab

http://slidepdf.com/reader/full/codmatlab 1/2

clc clear all 

numberOfRepeats = 1; sigmanu2 = 10 ^ ( -3 ); beta = 10 ^ ( -3 ); kappaVector = [ 0 1 1 11 ] * 10^(-6); rhoVector = 5 * [ 1 1 1 11 ]; betaKappaVector = [ 0 0 5*10^(-9) 10^(-8)10^(-7) ]; % 10^(-8) - 10^(-6) betaRhoVector = [ 0 0 0 00 ] ; lambda = 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; 

Page 2: codmatlab

7/17/2019 codmatlab

http://slidepdf.com/reader/full/codmatlab 2/2

  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{ 1 } = 'r'; cor{ 2 } = 'g'; cor{ 3 } = 'b'; cor{ 4 } = 'k'; cor{ 5 } = 'c'; cor{ 6 } = '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 )