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

EngeeDSP.BlockLMSFilter

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

Библиотека

EngeeDSP

Блок

LMS Filter

Описание

Системный объект EngeeDSP.BlockLMSFilter вычисляет выходные данные, ошибку и весовые коэффициенты, используя блок, реализующий адаптивный алгоритм наименьших средних квадратов (Least Mean Squares, LMS).

Чтобы вычислить выходные данные, ошибку и весовые коэффициенты, выполните следующие действия:

  1. Создайте объект EngeeDSP.BlockLMSFilter и установите его свойства.

  2. Вызовите объект с аргументами, как если бы это была функция.

Чтобы узнать подробнее о том, как работать с системными объектами, см. Системные объекты Engee.

Синтаксис

Создание

  • blms = EngeeDSP.BlockLMSFilter() — возвращает системный объект адаптивного КИХ-фильтра blms, который фильтрует входной сигнал и вычисляет весовые коэффициенты фильтра на основе блока алгоритма наименьших средних квадратов (LMS).

  • blms = EngeeDSP.BlockLMSFilter(length,blocksize) — возвращает системный объект адаптивного КИХ-фильтра blms, у которого для свойства Length установлено значение length, а для свойства BlockSize — значение blocksize.

  • blms = EngeeDSP.BlockLMSFilter(Name=Value) — возвращает системный объект адаптивного КИХ-фильтра с заданными свойствами в виде пары Name=Value, где Name — имя свойства, а Value — соответствующее значение. Можно указать несколько пар «имя-значение», порядок пар не имеет значения. Неуказанные свойства сохраняют свои значения по умолчанию.

    Пример:

    # создание адаптивного КИХ-фильтра с количеством отсчетов, полученных до адаптации весовых коэффициентов, 16
    blms = EngeeDSP.BlockLMSFilter(BlockSize = 16)

Использование

  • y,err,wts = blms(x,d) — фильтрует входной сигнал x, используя d в качестве желаемого сигнала, и возвращает отфильтрованный выходной сигнал y. Ошибка фильтра — err, оценочные веса фильтра — wts. Веса фильтра обновляются один раз для каждого блока данных, обрабатываемого объектом.

  • y,err = blms(x,d) — возвращает только отфильтрованный выходной сигнал y и ошибку фильтра err, если для свойства WeightsOutputPort установлено значение false.

  • ___ = blms(x,d,mu) — использует mu в качестве размера шага, если для свойства StepSizeSource установлено значение "Input port". Эти входные аргументы можно использовать с любым из предыдущих наборов выходных аргументов.

  • ___ = blms(x,d,a) — использует a в качестве сигнала, управляющего адаптацией, если для свойства AdaptInputPort установлено значение true. Когда a не равно нулю, фильтр непрерывно обновляет веса фильтра. Когда a равно нулю, веса фильтра остаются постоянными.

  • ___ = blms(x,d,r) — использует r в качестве сигнала сброса, если для свойства WeightsResetInputPort установлено значение true. Используйте свойство WeightsResetCondition для установки условия срабатывания сброса. Если происходит событие сброса, фильтр сбрасывает веса фильтра до их начальных значений.

  • y,err,wts = blms(x,d,mu,a,r) — фильтрует входной сигнал x, используя d в качестве желаемого сигнала, mu в качестве размера шага, a в качестве сигнала, управляющего адаптацией, и r в качестве сигнала сброса. Объект возвращает отфильтрованный выходной сигнал y, ошибку фильтра err и адаптированные веса фильтра wts. Установите соответствующие свойства, чтобы предоставить все возможные входные данные.

Аргументы

Входные аргументы

# x — входные данные
скаляр | вектор-столбец

Details

Сигнал, который будет отфильтрован системным объектом LMS-фильтра. Входной сигнал x и желаемый сигнал d должны иметь одинаковый размер и тип данных.

Длина входного сигнала должна быть целым кратным значению свойства BlockSize.

Типы данных

Float32, Float64

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

Да

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

Details

Фильтр LMS адаптирует свои весовые коэффициенты wts для минимизации ошибки err и максимально точного приближения входного сигнала x к желаемому сигналу d.

Входной сигнал x и желаемый сигнал d должны иметь одинаковый размер и тип данных.

Типы данных

Float32, Float64

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

Да

# mu — размер шага
неотрицательный скаляр

Details

Коэффициент размера шага адаптации, заданный как неотрицательный скаляр. Тип данных входного размера шага должен соответствовать типу данных аргументов x и d.

Малый размер шага обеспечивает малую ошибку в установившемся режиме между выходным сигналом y и желаемым сигналом d. Если размер шага мал, скорость сходимости фильтра снижается. Для повышения скорости сходимости увеличьте размер шага. Обратите внимание, что если размер шага велик, фильтр может стать нестабильным.

Зависимости

Чтобы использовать этот аргумент, установите для свойства StepSizeSource значение "Input port".

Типы данных

Float32, Float64

# a — управление адаптацией
скаляр

Details

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

Зависимости

Этот аргумент необходимо использовать, если для свойства AdaptInputPort установлено значение true.

Типы данных

Float32, Float64, Int8, Int16, Int32, UInt8, UInt16, UInt32, Bool

# r — сигнал сброса
скаляр

Details

Сигнал сброса, который сбрасывает веса фильтра на основе значений свойства WeightsResetInputPort.

Зависимости

Этот аргумент необходимо использовать, если для свойства WeightsResetInputPort установлено значение true.

Типы данных

Float32, Float64, Int8, Int16, Int32, UInt8, UInt16, UInt32, Bool

Выходные аргументы

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

Details

Отфильтрованный выходной сигнал, возвращаемый в виде скаляра или вектора-столбца. Объект адаптирует свои весовые коэффициенты фильтра для сходимости входного сигнала x к желаемому сигналу d. Фильтр выдает на выходе сходящийся сигнал.

Типы данных

Float32, Float64

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

Да

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

Details

Разница между выходным сигналом y и желаемым сигналом d, возвращаемая в виде скаляра или вектора-столбца. Тип данных err соответствует типу данных y. Цель адаптивного фильтра — минимизировать эту ошибку. Объект адаптирует свои веса для сходимости к оптимальным весам фильтра, которые обеспечивают выходной сигнал, максимально приближенный к желаемому сигналу.

Типы данных

Float32, Float64

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

Details

Адаптивные весовые коэффициенты фильтра, возвращаемые в виде скаляра или вектора-столбца длиной, заданной значением свойства Length.

Тип данных wts соответствует типу данных y.

Типы данных

Float32, Float64

Свойства

# Length — длина вектора весовых коэффициентов КИХ-фильтра
Вещественное число

Details

Длина вектора весовых коэффициентов КИХ-фильтра, заданная как положительное целое число.

# StepSizeSource — способ задания размера шага адаптации
Строка

Details

Способ задания коэффициента размера шага адаптации, заданный как

  • "Property" — укажите размер шага с помощью свойства StepSize.

  • "Input port" — укажите размер шага с помощью аргумента mu.

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

Details

Начальные значения весовых коэффициентов фильтра, заданные как скаляр или вектор длиной, равной значению свойства Length.

# WeightsResetInputPort — дополнительный вход для активации сброса значений весов
Логический тип

Details

Опция, позволяющая КИХ-фильтру сбрасывать значения весовых коэффициентов фильтра. По умолчанию для этого свойства установлено значение false, и объект не сбрасывает веса. Если для этого свойства установлено значение true, необходимо передать объекту управляющий входной сигнал сброса, тогда применится свойство WeightsResetCondition. Объект сбрасывает веса фильтра на основе значений свойства WeightsResetCondition и входного сигнала сброса, передаваемого алгоритму объекта.

# StepSize — размер шага адаптации
Вещественное число

Details

Коэффициент размера шага адаптации, заданный как неотрицательный скаляр.

Зависимости

Чтобы использовать это свойство, установите для свойства StepSizeSource значение "Property".

# LeakageFactor — коэффициент потерь, используемый в алгоритме LMS с утечкой
Вещественное число

Details

Коэффициент потерь, используемый в алгоритме LMS с утечкой, заданный как скаляр от 0 до 1 включительно. Если значение меньше 1, системный объект реализует алгоритм LMS с утечкой. Значение по умолчанию равно 1, что означает отсутствие утечки в адаптивном алгоритме.

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

Details

Опция, позволяющая указать, когда объект должен адаптировать весовые коэффициенты фильтра. По умолчанию для этого свойства установлено значение false, и фильтр постоянно обновляет веса фильтра. Если для этого свойства установлено значение true, объекту предоставляется входной сигнал управления адаптацией. Если значение этого входного сигнала не равно нулю, фильтр постоянно обновляет веса фильтра. Если значение входного сигнала равно нулю, веса фильтра остаются на своих текущих значениях.

# WeightsResetCondition — условие, запускающее сброс весов фильтра

Details

Укажите событие для сброса весов фильтра: "Rising edge", "Falling edge", "Either edge" или "Non-zero". Объект сбрасывает веса фильтра на основе значений этого свойства и входного сигнала сброса, передаваемого алгоритму объекта.

Зависимости

Чтобы использовать это свойство, установите для свойства WeightsResetInputPort значение "true".

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

Details

Установите для этого свойства значение true, чтобы вывести адаптированные весовые коэффициенты фильтра. Значение по умолчанию — true.

# BlockSize — количество отсчетов, полученных до адаптации весовых коэффициентов
Вещественное число

Details

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

Методы

Общие для всех системных объектов

step!

Запустить алгоритм работы системного объекта

release!

Разрешить изменение значения свойства системного объекта

reset!

Сброс внутренних состояний системного объекта

Алгоритмы

Этот объект реализует алгоритм, входные и выходные данные, описанные в документации блока LMS Filter. Свойства объекта соответствуют параметрам блока.