Документация Engee

LMS Filter

Адаптивный алгоритм наименьших средних квадратов для вычисления выходных данных, ошибок и весовых коэффициентов.

Тип: LMSFilter

Путь в библиотеке:

/Signal Operations/Filters/Adaptive Filters/LMS Filter

Описание

Блок LMS Filter может реализовать адаптивный КИХ-фильтр, используя пять различных алгоритмов. Блок оценивает весовые коэффициенты фильтра, необходимые для минимизации ошибки между выходным сигналом и желаемым сигналом . На выходе получается отфильтрованный входной сигнал, который является оценкой желаемого сигнала. Порт Error выводит результат вычитания выходного сигнала из желаемого сигнала.

Порты

Вход

# Input — входной сигнал
скаляр | вектор-столбец

Details

Входной сигнал, заданный как скаляр или вектор-столбец.

Если для параметра Algorithm установлено значение Sign-Error LMS, Sign-Data LMS или Sign-Sign LMS, то данные на порту Input должны быть вещественными.

Типы данных

Float32, Float64

Поддержка комплексных чисел

Нет

# Desired — желаемый сигнал
скаляр | вектор-столбец

Details

Желаемый сигнал, заданный как скаляр или вектор-столбец.

Желаемый сигнал должен иметь тот же тип данных, сложность и размеры, что и сигнал на порту Input.

Если для параметра Algorithm установлено значение Sign-Error LMS, Sign-Data LMS или Sign-Sign LMS, то данные на порту Desired должны быть вещественными.

Типы данных

Float32, Float64

Поддержка комплексных чисел

Нет

# Adapt — обновление весовых коэффициентов фильтра
скаляр

Details

Если значение на порту Adapt больше нуля, блок постоянно обновляет весовые коэффициенты фильтра.

Если значение на порту Adapt меньше или равен нулю, весовые коэффициенты остаются на своих текущих значениях.

Зависимости

Чтобы использовать этот порт, установите флажок Adapt port.

Типы данных

Float32, Float64, Int8, Int16, Int32, Bool

Поддержка комплексных чисел

Нет

# Reset — сброс весовых коэффициентов фильтра
скаляр

Details

Сигнал для сброса значений весовых коэффициентов фильтра к их начальным значениям, заданным в виде скаляра.

Блок сбрасывает значения весовых коэффициентов каждый раз, когда на порту Reset обнаруживается событие сброса.

Типы событий сброса смотрите в параметре Reset port.

Зависимости

Чтобы использовать этот порт, установите для параметра Reset port значение Передний фронт, Задний фронт, Either edge или Non-zero sample.

Типы данных

Float32, Float64, Int8, Int16, Int32, Bool

Поддержка комплексных чисел

Нет

# Step-size — размер шага
скаляр

Details

Введите размер шага .

Для сходимости уравнений алгоритма Normalized LMS: .

Тип входных данных должен совпадать с типом данных на порту Input.

Зависимости

Чтобы использовать этот порт, установите для параметра Specify step size via значение Input port.

Типы данных

Float32, Float64

Поддержка комплексных чисел

Нет

Выход

# Output — оценка желаемого сигнала
скаляр | вектор-столбец

Details

Оценка желаемого сигнала, возвращаемая в виде скаляра или вектор-столбца. Она имеет тот же размер и комплексность, что и входной сигнал.

Выходной сигнал имеет тот же тип данных, что и желаемый сигнал.

Типы данных

Float32, Float64

Поддержка комплексных чисел

Нет

# Error — ошибка между выходным и желаемым сигналами
скаляр | вектор-столбец

Details

Ошибка между выходным и желаемым сигналами, возвращаемая в виде скаляра или вектора-столбца. Эта ошибка является результатом вычитания выходного сигнала из желаемого сигнала.

Сигнал ошибки имеет тот же тип данных, что и желаемый сигнал.

Типы данных

Float32, Float64

Поддержка комплексных чисел

Нет

# Wts — весовые коэффициенты фильтра
скаляр | вектор-столбец

Details

Весовые коэффициенты фильтра, возвращаемые в виде скаляра или вектора-столбца. Для каждой итерации блок выводит текущие обновленные весовые коэффициенты фильтра из этого порта.

Зависимости

Чтобы использовать этот порт, установите флажок Output filter weights.

Типы данных

Float32, Float64

Поддержка комплексных чисел

Нет

Параметры

Основные

# Algorithm — алгоритм расчета весов фильтра
LMS | Normalized LMS | Sign-Error LMS | Sign-Data LMS | Sign-Sign LMS

Details

Выберите алгоритм, используемый для расчета весов фильтра.

Значения

LMS | Normalized LMS | Sign-Error LMS | Sign-Data LMS | Sign-Sign LMS

Значение по умолчанию

LMS

Имя для программного использования

Algorithm

Настраиваемый

Нет

Вычисляемый

Нет

# Filter length — длина фильтра
Целое число типа Int64

Details

Введите длину вектора весов КИХ-фильтра.

Значение по умолчанию

32

Имя для программного использования

FilterLength

Настраиваемый

Нет

Вычисляемый

Да

# Specify step size via — способ задания размера шага
Поле ввода | Input port

Details
  • Поле ввода — укажите размер шага с помощью параметра Step size (mu).

  • Input port — укажите размер шага с помощью порта Step-size.

Значения

Dialog | Input port

Значение по умолчанию

Dialog

Имя для программного использования

SpecifyStepSizeVia

Настраиваемый

Нет

Вычисляемый

Нет

# Step size (mu) — размер шага
Вещественное число

Details

Введите размер шага .

Для сходимости уравнений алгоритма Normalized LMS: .

Зависимости

Чтобы использовать этот параметр, установите для параметра Specify step size via значение Поле ввода.

Значение по умолчанию

0.1

Имя для программного использования

StepSize

Настраиваемый

Да

Вычисляемый

Да

# Leakage factor (0 to 1) — коэффициент потерь
Вещественное число

Details

Введите коэффициент потерь .

Значение по умолчанию

1.0

Имя для программного использования

LeakageFactor

Настраиваемый

Да

Вычисляемый

Да

# Initial value of filter weights — начальное значение весовых коэффициентов фильтра
Скаляр / вектор вещественных и/или комплексных чисел

Details

Введите начальное значение весовых коэффициентов фильтра в виде вектора или скаляра.

Если вы вводите скаляр, блок использует скалярное значение для создания вектора весовых коэффициентов фильтра. Длина этого вектора равна длине фильтра, а все его значения равны скалярному значению.

Значение по умолчанию

0.0

Имя для программного использования

InitialValueOfFilterWeights

Настраиваемый

Нет

Вычисляемый

Да

# Adapt port — включить порт адаптации
Логический тип

Details

Установите этот флажок, чтобы включить порт Adapt.

Значение по умолчанию

false (выключено)

Имя для программного использования

AdaptPort

Настраиваемый

Нет

Вычисляемый

Нет

# Reset port — порт сброса
None | Передний фронт | Задний фронт | Either edge | Non-zero sample

Details

Если вы хотите сбросить значения весов фильтра к их начальным значениям, используйте этот параметр.

Сигнал сброса должен иметь ту же скорость, что и входной сигнал данных.

  • None — отключить порт Reset.

Чтобы включить порт Reset, выберите одно из следующих значений:

  • Передний фронт — запускает операцию подсчета или сброса, когда сигнал на входном порту Reset изменяется следующим образом:

    • Повышается от переднего фронта до положительного или нуля;

    • Повышается от нуля до переднего фронта, когда повышение не является продолжением повышения от заднего фронта до нуля, как показано на рисунке:

      counter 1

  • Задний фронт — запускает операцию подсчета или сброса, когда сигнал на входном порту Reset изменяется следующим образом:

    • Понижается с переднего фронта на отрицательное или на ноль;

    • Понижается от нуля до заднего фронта, когда понижение не является продолжением понижения от переднего фронта до нуля, как показано на рисунке:

      counter 2

  • Either edge — запускает операцию подсчета или сброса, когда на входном порту Reset происходит событие запуска Передний фронт или Задний фронт.

  • Non-zero sample — запускает операцию подсчета или сброса в каждый такт выборки, когда сигнал на входном порту Reset не равен нулю.

Значения

None | Rising edge | Falling edge | Either edge | Non-zero sample

Значение по умолчанию

None

Имя для программного использования

ResetPort

Настраиваемый

Нет

Вычисляемый

Нет

# Output filter weights — весовые коэффициенты на выходе фильтра
Логический тип

Details

Установите этот флажок, чтобы экспортировать весовые коэффициенты фильтра из выходного порта Wts. Для каждой итерации блок выводит текущие обновленные весовые коэффициенты из этого порта.

Значение по умолчанию

true (включено)

Имя для программного использования

OutputFilterWeights

Настраиваемый

Нет

Вычисляемый

Нет

Дополнительно

Алгоритмы LMS-фильтра

Details

Если для параметра Algorithm установлено значение LMS, блок вычисляет веса фильтра с помощью алгоритма наименьших средних квадратов (Least Mean Squares, LMS). Этот алгоритм определяется следующими уравнениями:





Различные алгоритмы адаптивного LMS-фильтра, доступные в этом блоке, определяются следующим образом:

  • LMS:

  • Normalized LMS:

    В случае Normalized LMS, чтобы преодолеть потенциальную численную нестабильность при обновлении весов, в знаменатель добавлена небольшая положительная константа . Для входных данных с плавающей запятой двойной точности равняется выходу функции eps(Float64). Для данных одинарной точности равняется выходу функции eps(Float32).

  • Sign-Error LMS:

  • Sign-Data LMS:

    где является вещественным числом.

  • Sign-Sign LMS:

    где является вещественным числом.

В уравнениях выше используются следующие переменные:

  • — индекс текущего времени;

  • — вектор буферизованных входных отсчетов на шаге ;

  • — комплексно-сопряженный вектор буферизованных входных отсчетов на шаге ;

  • — вектор весовых оценок фильтра на шаге ;

  • — отфильтрованный выходной сигнал на шаге ;

  • — ошибка оценки на шаге ;

  • — желаемый сигнал на шаге ;

  • — размер шага адаптации;

  • — коэффициент потерь такой, что ;

  • — константа, которая корректирует любую потенциальную численную нестабильность, возникающую во время обновления весов.

Литература

  1. Hayes, M.H. Statistical Digital Signal Processing and Modeling. New York: John Wiley & Sons, 1996.