NLMS(n::Int, μ::T)

Create an NLMS FIR-filter with n coefficients (filter taps) and learning rate 0 < μ ≤ 1. The type of μ determines the numeric type used by the filter.

Call the filter object like a function ŷ, e = f(x, d) where x is the input and d is the desired output. To create an adaptive line enhancer (ALE), set $d[k] = x[k-Δ]$ where $Δ$ is a positive integer delay, like 1.

yh = adaptive_filter(y, alg=MSPI; order=4, lr=0.1)

Filters y with an adaptive AR (only poles) filter with specified order. Returns yh which is the predicted output from an adaptive line enhancer (ALE). If your noise is wideband and signal narrowband, yh is your desired filtered signal. If the noise is narrowband and the signal is wideband, then y-yh is your desired filtered signal.

The first order samples of yh will be copies of y. The signals will thus have the same length.


  • alg: Stochastic approximation algorithm or weight function. Examples: OMAP, MSPI, OMAS, ADAM, ExponentialWeight, EqualWeight
  • y: Input signal
  • order: Filter order
  • lr: Learning rate or weight depending on alg
focused_adaptive_filter(y, band, fs, args...; kwargs...)

An adaptive filter that focuses its attention to a specific frequency range.


  • y: Input signal
  • band: Frequency band typle
  • fs: Sample rate, e.g., 44100
  • args: Passed through to adaptive_filter
  • kwargs: Passed through to adaptive_filter