LMS
Overview
Normalized LMS FIR filter
Discussion
The LMS module implements a single channel N-order FIR adaptive filter.
The module takes 2 single channel inputs: desired filter output and filter input (the reference signal).
For every data sample the filter output is compared to the desired output and this information is used to
update the filter taps according to the normalized LMS algorithm. The module always has 2 single channel ouputs: adaptive
filter output and error signal, (desired filter output - actual filter output. The module also optionally outputs the filter coefficients on a third output pin.
The array coeffs holds the filter coefficients and is of
size numTaps x 1. The coefficients are stored in normal order. The state variable array is of size
numTaps x 1. The adaptation constant mu is visible as a parameter.
Module Pack
Advanced
ClassID
classID = 1292
Type Definition
typedef struct _ModuleLMS
{
ModuleInstanceDescriptor instance; // Common Audio Weaver module instance structure
INT32 maxTaps; // Maximum length of the filter
INT32 numTaps; // Current length of the filter
FLOAT32 mu; // Adaptation constant
INT32 stateIndex; // Index of the oldest state variable in the array of state variables
FLOAT32* coeffs; // Coefficient array
FLOAT32* state; // State variable array
} ModuleLMSClass;
Variables
Properties
| Name |
Type |
Usage |
isHidden |
Default Value |
Range |
Units |
| maxTaps |
int |
const |
0 |
1024 |
1:1:5000 |
samples |
| numTaps |
int |
parameter |
0 |
32 |
1:1:1024 |
samples |
| mu |
float |
parameter |
0 |
0 |
0:1 |
linear |
| stateIndex |
int |
state |
1 |
0 |
Unrestricted |
|
| coeffs |
float* |
derived |
0 |
[1024 x 1] |
Unrestricted |
|
| state |
float* |
state |
1 |
[1027 x 1] |
Unrestricted |
|
Pins
|
|
| Name |
dataIn |
| Description |
Filter input |
| Data type |
float |
| Channel range |
1 |
| Block size range |
Unrestricted |
| Sample rate range |
Unrestricted |
| Complex support |
Real |
|
|
| Name |
reference |
| Description |
Reference input: desired filter output |
| Data type |
float |
| Channel range |
1 |
| Block size range |
Unrestricted |
| Sample rate range |
Unrestricted |
| Complex support |
Real |
Output Pins
|
|
| Name |
dataOut |
| Description |
Filter output |
| Data Type |
float |
|
|
| Name |
errorSignal |
| Description |
Error signal = difference between filter output and reference input |
| Data Type |
float |
|
|
| Name |
coeffs |
| Description |
Filter coefficients |
| Data Type |
float |
Matlab Usage
File Name: lms_module.m
M=lms_module(NAME, MAXTAPS, OUTPUTCOEFFS)
Creates a normalized LMS FIR filter for use in the Audio Weaver environment.
The module has 2 single channel input pins and up to 3 single channel
output pins:
Input Pin 1: dataIn - Adaptive filter desired output
Input Pin 2: reference - Adaptive filter input
Output Pin 1: dataOut - output of the adaptive filter
Output Pin 2: errorSignal - difference between dataIn and dataOut
Output Pin 3: Coefficients (optional)
Arguments:
NAME - name of the module.
MAXTAPS - maximum length of the filter (number of taps).
OUTPUTCOEFFS - Boolean which specifies whether a third output
pin holding the coefficients should be added. By default,
OUTPUTCOEFFS=0.
Copyright (c) 2026 DSP Concepts, Inc.