An adaptive filter using the Least-Mean Square (LMS) algorithm, also known as the stochastic gradient algorithm. The initial filter coefficients are given by the initialTaps parameter. The tap values can be observed on the tapValues output. The default initial taps initialTaps are {1, 0, 0, 0}. This actor supports decimation, but not interpolation.
When used correctly, this LMS adaptive filter will adapt to try to minimize the mean-squared error of the signal at its error input. In order for this to be possible, the output of the filter should be compared (subtracted from) some reference signal to produce an error signal. That error signal should be fed back to the error input.
The stepSize parameter determines the rate of adaptation. If its magnitude is too large, or if it has the wrong sign, then the adaptation algorithm will be unstable.
The errorDelay parameter must equal the total number of delays in the path from the output of the filter back to the error input. This ensures correct alignment of the adaptation algorithm. The number of delays must be greater than zero.
This actor is type polymorphic, supporting any data type that supports multiplication by a scalar (the stepSize) and addition.
The algorithm is simple. Prior to each invocation of the parent class (an FIR filter), which computes the output given the input, this actor updates the coefficients according to the following formula,
newTapValue = oldTapValue + error * stepSize * tapData
where tapData is the contents of the delay line at the tap in question. This assumes that the decimation parameter is set to 1 (the default). If it has a value different from 1, the algorithm is slightly more involved. Similarly, this assumes that the errorDelay is 1.
Field Detail |
public VisualSim.actor.TypedIOPort error
public VisualSim.data.expr.Parameter errorDelay
public VisualSim.data.expr.Parameter initialTaps
public VisualSim.data.expr.Parameter stepSize
public VisualSim.actor.TypedIOPort tapValues
public VisualSim.data.expr.Parameter decimation
public VisualSim.data.expr.Parameter decimationPhase
Created with the Personal Edition of HelpNDoc: Free EBook and documentation generator