Wiki

This version (23 Jul 2019 15:51) was approved by Robin Getz.

NLMS Adaptive Filter

Click here to return to the Filters page

The Normalized Least Mean Squares (NLMS) adaptive filter is an FIR based adaptive filter. The filter update equation is given by

     w(n+1) = w(n) +[(μ * e(n) * x(n)) / Eng] \\
     

Where:

     w(n+1) = New filter coefficient set
     w(n) = Current filter coefficient set
     μ      = Learning rate
     x(n)  = Input signal
     e(n)  = Error  = d(n)-y(n)
     d(n)  = Desired signal
     y(n)  = Output signal
     Eng = Average energy over the duration of the filter = (1/M)*Σx(m) <sup>2</sup>      



Input Pins

NameFormat [int/dec/float] - [control/audio]Function Description
Pin 0: InputFloat- audioInput signal to FIR filter
Pin 1: InputFloat- audioThe desired audio output signal
Pin 2: InputFloat- controlSignal which indicates whether FIR filter weights are to be updated or not

Output Pins

NameFormat [int/dec/float] - [control/audio]Function Description
Pin 0: OutputFloat - audioThe filtered output
Pin 1: OutputFloat - controlError Signal - Difference signal between desired signal and the filtered output

Grow Algorithm

The module does not support growth and add functionality.

GUI Controls

GUI Control NameDefault ValueRangeFunction Description
Alpha0.10.000001-1.0 in steps of 0.000001Filter learning rate

DSP Parameter Information

GUI Control NameCompiler NameFunction Description
AlphaNLMSFiltBlkAlg1lms_alphaFilter learning rate

Here,

  • Green - Algorithm Name
  • Red - Instance Number (Changes for each instance)
  • Blue - Parameter Name

Algorithm Description

This implementation of NLMS is a block based implementation. The weight update happens at the end of every processing block. The weight update equation is given below:

w(m+1) = w(m) + μ * Err * x(m) / Eng
Where:

          w(m+1) = New filter coefficient set
          w(m) = Current filter coefficient set
          μ      = Learning rate
          Err = RMS error over the block duration = sqrt(∑e(n)2/N)
              e(n) = d(n)-y(n)
              d(n)  = Desired signal
              y(n)  = Output signal
         x(m)  = Samples within the filter state
         Eng = Average energy over the duration of the filter = Σx(m)2/M

Note:

  N = Block Size and n varies over 0-(N-1)
  M = Filter tap length and m varies over 0-(M-1)
  

Supported IC's

1. ADSP-213xx
2. ADSP-214xx
3. ADSP-215xx
4. ADSP-SC5xx

resources/tools-software/sigmastudio/toolbox/filters/nlmsfilter.txt · Last modified: 21 Aug 2018 15:32 by Deepak Raghotham