Normalized Least Mean Square (NLMS) has been used in a wide range of applications, including echo and feedback cancellation, impulse response estimation and equalization and system identification. The robustness against various noise types and the simple implementation make NLMS the most popular choice in the industry.

The following diagram and equations describes the implementation procedure of NLMS.

We have a driving signal x(n) and a desired signal or target signal d(n). Our goal is to design a system h(n) that can follow the desired signal d(n) when x(n) is driving. NLMS algorithm minimizes the error e(n) in the mean squared sense.

y(n) =** h**(n)** ^{T
}x**(n)

e(n) = y(n) – d(n)

NLMS is implemented iteratively as below,

**h**(n + 1) = ** ^{ }h**(n) + μe(n)

**x**(n)/[(

**x**(n)

**(n)]**

^{T }xas the standard form. μ is the iteration step size that controls convergence speed and the residue error.

The large step is needed to increases convergence speech but
the small step size is needed to reduce the residue error. VOCAL technologies
has implemented a variable step size algorithm to overcome the tradeoff. The
main idea is that we use large steps when we are far away and small steps when
we are close to the optimal point. Mathematically we desire to minimize ∆**h**(n) = **h**(n)
– ** ^{ }h** if

**h**is the true system function. By subtracting

**h**from both side of the NLMS algorithm above,

∆**h**(n
+ 1) = ∆**h**(n) + μe(n)**x**(n)/[(**x**(n)** ^{T
}x**(n)].

After the standard minimization procedures, we obtain the optimal step size as below

μ(n) = [e(n)e(n)]/[e(n)^{2}(**x**(n)** ^{T }x**(n)]

where e(n) = y(n) – y(n) .