| Filter Design Toolbox | ![]() |
Construct a Block LMS (BLMS) FIR adaptive filter
Syntax
Description
ha = adaptfilt.blms(l,step,leakage,blocklen,coeffs,states)
constructs an FIR block LMS adaptive filter ha, where l is the adaptive filter length (the number of coefficients or taps) and must be a positive integer. l defaults to 10.
step is the block LMS step size. You must set step to a nonnegative scalar. You can use function maxstep to determine a reasonable range of step size values for the signals being processed. When unspecified, step defaults to 0.
leakage is the block LMS leakage factor. It must be a scalar between 0 and 1. If you set leakage to be less than one, you implement the leaky block LMS algorithm. leakage defaults to 1 specifying no leakage in the adapting algorithm.
blocklen is the block length used. It must be a positive integer and the signal vectors d and x should be divisible by blocklen. Larger block lengths result in faster per-sample execution times but with poor adaptation characteristics. When you choose blocklen such that blocklen + length(coeffs) is a power of 2, use adaptfilt.blmsfft. blocklen defaults to l.
coeffs is a vector of initial filter coefficients. it must be a length l vector. coeffs defaults to length l vector of zeros.
states contains a vector of your initial filter states. It must be a length l vector and defaults to a length l vector of zeros when you do not include it in your calling function.
adaptfilt.blms Object Properties
In the syntax for creating the adaptfilt object, the input options are properties of the object created. This table list all the properties for the adjoint LMS object, their default values, and a brief description of the property.
Example
Use an adaptive filter to identify an unknown 32nd-order FIR filter. In this example we input 500 samples to result in 500 iterations of the adaptation process. You see in the plot that follows the example code that the adaptive filter has determined the coefficients of the unknown system under test.
x = randn(1,500); % Input to the filter b = fir1(31,0.5); % FIR system to be identified no = 0.1*randn(1,500); % Observation noise signal d = filter(b,1,x)+no; % Desired signal mu = 0.008; % Block LMS step size n = 5; % Block length ha = adaptfilt.blms(32,mu,1,n); [y,e] = filter(ha,x,d); subplot(2,1,1); plot(1:500,[d;y;e]); title('System Identification of an FIR filter'); legend('Desired','Output','Error'); xlabel('Time Index'); ylabel('Signal Value'); subplot(2,1,2); stem([b.',ha.coefficients.']); legend('Actual','Estimated'); xlabel('Coefficient #'); ylabel('Coefficient Value'); grid on;
See Also
adaptfilt.blmsfft, adaptfilt.fdaf, adaptfilt.lms
Reference
J.J. Shynk, "Frequency-Domain and Multirate Adaptive Filtering," IEEE Signal Processing Magazine, vol. 9, no. 1, pp. 14-37, Jan. 1992.
| adaptfilt.bap | adaptfilt.blmsfft | ![]() |
Learn more about the latest releases of MathWorks products: |
| © 1994-2009 The MathWorks, Inc. - Site Help - Patents - Trademarks - Privacy Policy - Preventing Piracy - RSS |