Filter Design Toolbox | ![]() ![]() |
Configure the initialization structure used as an input argument to adaptsd
Syntax
Description
s = initsd(w0,mu)
returns the fully populated structure s
that you use when you call adaptsd
. Vector w0
contains the initial values of the filter coefficients. Its length should equal the order of the adapting FIR filter plus one. mu
is the sign data least mean square (SDLMS) algorithm step size. The step size you specify determines both the time it takes for the SDLMS algorithm to converge to a solution and the accuracy of that solution (how closely the result approaches the minimum least mean square error). Generally, small step sizes adapt more slowly but more closely and large step sizes adapt more quickly with larger error compared to the true minimum mean square error.
In matrix form, the SDLMS algorithm is
![]() ![]() |
(13-2) |
with vector w containing the weights applied to the filter coefficients and vector x containing the input data. e(k) (equal to desired signal - filtered signal) is the error at time k and is the quantity the SDLMS algorithm seeks to minimize. µ (mu
) is the step size. As you specify mu
smaller, the correction to the filter weights gets smaller for each sample and the SDLMS error falls more slowly. Larger mu
changes the weights more for each step so the error falls more rapidly, but the resulting error does not approach the ideal solution as closely. To ensure good convergence rate and stability, select mu
within the following bounds:
where N is the number of samples in the signal. Also, define mu
as a power of two.
s = initsd(w0,mu,zi)
adds input argument zi
to specify the filter initial conditions. When you omit zi
or specify it as empty, [ ], initsd
defaults to zi
equal to a zero vector of length [length(w0)-1]
. For conditional processing such as using adaptse
in a for-loop, specifying the initial conditions is very important. Each iteration of the SDLMS algorithm uses the weights from the prior interation. You supply the initial conditions so the first iteration has a set of prior filter weights to start from.
s = initsd(w0,mu,zi,lf)
specifies the leakage factor lf
. Including the leakage factor can improve the behavior of the algorithm. Leaking the weight w(k) ( the leakage factor applies to the weight in Equation 13-2) forces the algorithm to continue to adapt even after it reaches its minimum value. This can mean that the leaky SDLMS does not achieve quite so accurate a measure of the minimum mean square error. However, the sensitivity to errors, or to small values in the input is reduced when you use the leakage factor. Typically, set lf
between 0.9 (considered very leaky) and 1.0, meaning no leakage. If you specify lf
as empty, it defaults to one.
See Also
adaptsd
, initse
, initss
, adaptlms
, adaptrls
, initlms
, initnlms
References
Hayes, Monson. H., Statistical Digital Signal Processing and Modeling, John Wiley and Sons, Inc, 1996.
![]() | initrls | initse | ![]() |