LMSAdaptive

Parent Previous Next

VisualSim.simulators.sdf.lib
Class LMSAdaptive


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

error

public VisualSim.actor.TypedIOPort error


errorDelay

public VisualSim.data.expr.Parameter errorDelay


initialTaps

public VisualSim.data.expr.Parameter initialTaps


stepSize

public VisualSim.data.expr.Parameter stepSize


tapValues

public VisualSim.actor.TypedIOPort tapValues





decimation

public VisualSim.data.expr.Parameter decimation


decimationPhase

public VisualSim.data.expr.Parameter decimationPhase




Created with the Personal Edition of HelpNDoc: Free EBook and documentation generator