Skip to contents

Least-mean-squares adaptive transversal filter. Returns the filter output y and instantaneous error e = d - y. Coefficient update: w <- w + 2 * mu * e[i] * x_seg.

Usage

morie_dsp_lms(x, d, order = 16L, mu = 0.01)

Arguments

x

Input (reference) vector.

d

Desired vector, same length as x.

order

Filter order (taps). Default 16.

mu

Step size. Default 0.01.

Value

List with elements y and e, both length(x).

References

Rangayyan & Krishnan (2015), Ch. 3, sec. 3.6; Widrow & Stearns (1985).

Examples

if (requireNamespace("ranger", quietly = TRUE)) {
  set.seed(1)
  n <- 1000
  x <- rnorm(n)
  d <- 0.5 * c(0, x[-n]) + 0.01 * rnorm(n) # delayed, scaled target
  out <- morie_dsp_lms(x, d, order = 4L, mu = 0.05)
  mean(out$e[801:1000]^2) # post-convergence error is small
}
#> [1] 0.0001780497