Upload
jessica-sanson
View
212
Download
0
Embed Size (px)
DESCRIPTION
codigo matlab
Citation preview
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;
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 )