Maximum step size for adaptive filter convergence
mumax = maxstep(ha,x)
[mumax,mumaxmse] = maxstep(ha,x)
mumax = maxstep(ha,x) predicts a bound on the step size to provide convergence of the mean values of the adaptive filter coefficients. The columns of the matrix x contain individual input signal sequences. The signal set is assumed to have zero mean or nearly so.
[mumax,mumaxmse] = maxstep(ha,x) predicts a bound on the adaptive filter step size to provide convergence of the LMS adaptive filter coefficients in the mean-square sense. maxstep issues a warning when ha.stepsize is outside of the range 0 < ha.stepsize < mumaxmse/2.
maxstep is available for the following adaptive filter objects:
adaptfilt.nlms (uses a different syntax. Refer to the text below.)
Note With adaptfilt.nlms filter objects, maxstep uses the following slightly different syntax:
mumax = maxstep(ha) [mumax,mumaxmse] = maxstep(ha)
The maximum step size for convergence is fully defined by the filter object ha. Matrix x is not necessary. If you include an x input matrix, MATLAB returns an error.
Analyze and simulate a 32-coefficient (31st-order) LMS adaptive filter object. To demonstrate the adaptation process, run 2000 iterations and 50 trials.
% Specify [numiterations,numexamples] = size(x); x = zeros(2000,50); d = x; obj = fdesign.lowpass('n,fc',31,0.5); hd = design(obj,'window'); % FIR filter to identified. coef = cell2mat(hd.coefficients); % Convert cell array to matrix. for k=1:size(x,2); % Create input and desired response signal % matrices. % Set the (k)th input to the filter. x(:,k) = filter(sqrt(0.75),[1 -0.5],sign(randn(size(x,1),1))); n = 0.1*randn(size(x,1),1); % (k)th observation noise signal. d(:,k) = filter(coef,1,x(:,k))+n; % (k)th desired signal end. end mu = 0.1; % LMS step size. ha = adaptfilt.lms(32,mu); [mumax,mumaxmse] = maxstep(ha,x); Warning: Step size is not in the range 0 < mu < mumaxmse/2: Erratic behavior might result. mumax mumax = 0.0623 mumaxmse mumaxmse = 0.0530