ΣSigmaStudio English

NLMS адаптивный фильтр


Нормализованный алгоритм наименьших средних квадратов (NLMS) — это адаптивный фильтр на основе КИХ-фильтра. Уравнение обновления фильтра задается формулой

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

Где:

     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) 2      

NLMS адаптивный фильтр

NLMS адаптивный фильтр

Входные пины

NameFormat [int/dec/float] - [control/audio]Function Description
Pin 0: InputFloat- audioВходной сигнал для КИХ-фильтра
Pin 1: InputFloat- audioЖелаемый выходной аудиосигнал
Pin 2: InputFloat- controlСигнал, указывающий, следует ли обновлять весовые коэффициенты КИХ-фильтра

Выходные пины

NameFormat [int/dec/float] - [control/audio]Function Description
Pin 0: OutputFloat - audioОтфильтрованный выходной сигнал
Pin 1: OutputFloat - controlСигнал ошибки — разностный сигнал между желаемым сигналом и отфильтрованным выходным сигналом

Алгоритм расширения (Grow)

Модуль не поддерживает функции расширения (growth) и добавления (add).

Элементы управления GUI

GUI Control NameDefault ValueRangeFunction Description
Alpha0.10.000001-1.0 in steps of 0.000001Скорость обучения фильтра

Информация о параметрах DSP

GUI Control NameCompiler NameFunction Description
AlphaNLMSFiltBlkAlg1lms_alphaСкорость обучения фильтра

Здесь,

  • Зеленый — Название алгоритма
  • Красный — Номер экземпляра (изменяется для каждого экземпляра)
  • Синий — Название параметра

Описание алгоритма

Данная реализация NLMS является блочной реализацией. Обновление весовых коэффициентов происходит в конце каждого блока обработки. Уравнение обновления весовых коэффициентов приведено ниже:

w(m+1) = w(m) + μ * Err * x(m) / Eng
Где:

          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

Примечание:

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

Поддерживаемые ИС

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

NLMS Adaptive Filter в SigmaStudio: настройка и параметры

NLMS Adaptive Filter (Normalized Least Mean Squares) — это адаптивный фильтр на базе FIR-структуры, доступный в среде SigmaStudio для процессоров семейства SigmaDSP от Analog Devices. Данный алгоритм предназначен для систем активного шумоподавления, эхоподавления и идентификации каналов, где требуется автоматическая подстройка коэффициентов под изменяющиеся условия сигнала. Принцип работы основан на минимизации ошибки между желаемым сигналом d(n) и выходом фильтра y(n). Обновление коэффициентов происходит по формуле w(n+1) = w(n) + [(μ * e(n) * x(n)) / Eng], где μ — скорость обучения (learning rate), e(n) — сигнал ошибки, а Eng — средняя энергия входного сигнала за время фильтрации. Нормализация по энергии обеспечивает устойчивость алгоритма при переменной амплитуде входного сигнала. В реализации SigmaStudio используется блочный принцип обработки: весовые коэффициенты обновляются в конце каждого блока данных. При этом в формуле применяется RMS-значение ошибки за блок, что повышает стабильность сходимости. Фильтр имеет три входа: аудиовход для сигнала, вход желаемого сигнала и управляющий вход, который разрешает или запрещает обновление весов. Выхода два — отфильтрованный аудиосигнал и контрольный сигнал ошибки. Для настройки в проекте SigmaStudio используется единственный GUI-параметр Alpha с диапазоном от 0.000001 до 1.0 (шаг 0.000001). Значение по умолчанию — 0.1. Этот параметр напрямую задает скорость обучения фильтра и компилируется в DSP-параметр NLMSFiltBlkAlg lms_alpha.